Maison >développement back-end >Tutoriel Python >Pourquoi mon dictionnaire Python semble-t-il ordonné alors qu'il n'est pas ordonné ?
Ordre des dictionnaires en Python
Pourquoi un dictionnaire Python semble-t-il être ordonné alors qu'il est censé être non ordonné ?
Considérez le dictionnaire suivant :
propertyList = { "id": "int", "name": "char(40)", "team": "int", "realOwner": "int", "x": "int", "y": "int", "description": "char(255)", "port": "bool", "secret": "bool", "dead": "bool", "nomadic": "bool", "population": "int", "slaves": "int", }
Lors de l'impression du dictionnaire avec "n".join(myDict), un un ordre inattendu est observé :
name nomadic dead port realOwner secret slaves team y x Population id description
Bien que les dictionnaires Python ne soient effectivement pas ordonnés, le même ordre est systématiquement produit.
Implémentation sous-jacente
Dans les versions plus anciennes versions de Python, les dictionnaires ont été implémentés sous forme de tables de hachage. Les tables de hachage utilisent une fonction pour mapper les clés à des emplacements spécifiques dans un tableau, ce qui donne un ordre apparemment arbitraire mais cohérent.
Implémentation de dict ordonné
Python a depuis révisé son implémentation de dict pour préserver l’ordre d’insertion. Cette garantie est effective à partir de Python 3.7. Par conséquent, l'implémentation du dictionnaire n'est plus uniquement basée sur une table de hachage, bien qu'une table de hachage soit toujours utilisée dans sa construction.
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!