"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Pouvez-vous geler un dictionnaire en Python ?

Pouvez-vous geler un dictionnaire en Python ?

Publié le 2024-11-03
Parcourir:193

 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 :

import collections

class FrozenDict(collections.Mapping):
    ...

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. :

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'

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.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3