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 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.
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.
À 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.
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.
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.
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
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!