Maison  >  Article  >  développement back-end  >  Pouvez-vous geler un dictionnaire en Python ?

Pouvez-vous geler un dictionnaire en Python ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-28 12:54:02951parcourir

 Can You Freeze a Dictionary in Python?

Un « dict gelé » est-il possible en Python ?

Le concept de « dict gelé » a été un sujet de discussion au sein du Communauté Python. Bien que Python ne fournisse pas de dictionnaire gelé intégré, plusieurs solutions ont émergé pour répondre au besoin d'un dictionnaire immuable et hachable.

Une raison courante pour vouloir un dictionnaire gelé est de mémoriser des appels de fonction avec des arguments inconnus. Une approche typique consiste à convertir les arguments en tuple à l'aide de tuple(sorted(kwargs.items())), en s'appuyant sur la stabilité du tri pour la recherche dans la table de hachage.

Pour une approche plus complète, considérez la classe FrozenDict suivante :

<code class="python">import collections

class FrozenDict(collections.Mapping):
    ...</code>

Cette classe fournit des méthodes d'itération, de détermination de la longueur, de récupération d'éléments et de calcul de hachage, garantissant qu'elle se comporte comme un dictionnaire standard et prend en charge le hachage.

En pratique, FrozenDict fonctionne efficacement :

<code class="python">x = FrozenDict(a=1, b=2)
y = FrozenDict(a=1, b=2)
print(x is y, x == y, x == {'a': 1, 'b': 2})
d = {x: 'foo'}
print(d[y])  # 'foo'</code>

En fournissant une implémentation personnalisée, FrozenDict permet des dictionnaires immuables et hachables en Python, étendant les possibilités de gestion des objets et d'optimisation de la mémoire.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn