Maison >développement back-end >Tutoriel Python >Pourquoi l'ordre du dictionnaire Python est-il incohérent dans les anciennes versions mais cohérent dans Python 3.7 et versions ultérieures ?

Pourquoi l'ordre du dictionnaire Python est-il incohérent dans les anciennes versions mais cohérent dans Python 3.7 et versions ultérieures ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-30 07:21:10958parcourir

Why is Python Dictionary Ordering Inconsistent in Older Versions but Consistent in Python 3.7 and Later?

Comprendre l'ordre des dictionnaires en Python

Pourquoi Python ordonne-t-il les dictionnaires de manière incohérente ? Cette question a dérouté de nombreux programmeurs, d'autant plus que les dictionnaires sont censés être des collections non ordonnées.

Dans les anciennes versions de Python

Pour les versions antérieures de Python, l'ordre des dictionnaires n'était pas entièrement aléatoire. Il était basé sur la fonction de hachage interne utilisée pour déterminer l'emplacement de chaque paire clé-valeur dans la table de hachage. Bien que l'ordre des éléments soit cohérent, il n'était pas évident.

Modifications introduites dans Python 3.7

À partir de Python 3.7, l'implémentation de la structure de données dict a subi un changement important. Les dictionnaires conservent désormais l'ordre d'insertion, garantissant que l'ordre des éléments reste cohérent et prévisible. Ceci a été réalisé en incorporant une liste chaînée dans l'implémentation de la table de hachage.

Implémentation du dictionnaire Python

Le dictionnaire Python est implémenté sous la forme d'une table de hachage qui utilise une fonction appelée fonction de hachage pour déterminer l'emplacement. de chaque paire clé-valeur. La fonction de hachage génère un index unique pour chaque clé, garantissant une récupération rapide et efficace.

Dans les anciennes versions de Python, la table de hachage était la seule structure de stockage. Cela signifiait que l'ordre des éléments était déterminé par l'ordre dans lequel les clés étaient hachées, ce qui n'était pas immédiatement évident.

Préservation de l'ordre dans Python 3.7 et au-delà

Dans Python 3.7, un lien lié list a été ajoutée à l’implémentation de la table de hachage. Cette liste chaînée suit l'ordre dans lequel les paires clé-valeur sont insérées. En maintenant cet ordre, Python garantit que l'ordre des éléments est cohérent et prévisible.

Exemple

Dans les versions Python antérieures à 3.7, le code suivant produirait un ordre incohérent :

my_dict = {"a": 1, "b": 2, "c": 3}
print("\n".join(my_dict))  # Output: Random order

Cependant, dans Python 3.7 et versions ultérieures, l'ordre est préservé :

my_dict = {"a": 1, "b": 2, "c": 3}
print("\n".join(my_dict))  # Output: a, b, c

Conclusion

Le comportement de classement des dictionnaires de Python a évolué au fil du temps. Dans les anciennes versions, l’ordre n’était pas immédiatement évident mais cohérent en raison de la nature de l’implémentation de la table de hachage. À partir de Python 3.7, les dictionnaires conservent l'ordre d'insertion, ce qui rend l'ordre plus intuitif et prévisible.

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