Pouvez-vous geler un dictionnaire en Python ?

Linda Hamilton
Libérer: 2024-10-28 12:54:02
original
1062 Les gens l'ont consulté

 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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal