Maison >développement back-end >Tutoriel Python >Pourquoi mon dictionnaire Python semble-t-il ordonné alors qu'il n'est pas ordonné ?

Pourquoi mon dictionnaire Python semble-t-il ordonné alors qu'il n'est pas ordonné ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-28 01:43:11710parcourir

Why Does My Python Dictionary Appear Ordered Despite Being Unordered?

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!

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