Heim >Backend-Entwicklung >Python-Tutorial >Warum erscheint mein Python-Wörterbuch geordnet, obwohl es ungeordnet ist?

Warum erscheint mein Python-Wörterbuch geordnet, obwohl es ungeordnet ist?

Barbara Streisand
Barbara StreisandOriginal
2024-11-28 01:43:11710Durchsuche

Why Does My Python Dictionary Appear Ordered Despite Being Unordered?

Wörterbuchreihenfolge in Python

Warum scheint ein Python-Wörterbuch geordnet zu sein, obwohl es angeblich ungeordnet ist?

Überlegen Sie das folgende Wörterbuch:

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",
}

Beim Drucken des Wörterbuchs mit „n“.join(myDict), Es wird eine unerwartete Reihenfolge beobachtet:

name
nomadic
dead
port
realOwner
secret
slaves
team
y
x
Population
id
description

Während Python-Wörterbücher tatsächlich ungeordnet sind, wird immer dieselbe Reihenfolge erzeugt.

Zugrunde liegende Implementierung

In In älteren Python-Versionen wurden Wörterbücher als Hash-Tabellen implementiert. Hash-Tabellen verwenden eine Funktion, um Schlüssel bestimmten Positionen in einem Array zuzuordnen, was zu einer scheinbar willkürlichen, aber konsistenten Reihenfolge führt.

Ordered Dict Implementation

Python hat es inzwischen überarbeitet dict-Implementierung, um die Einfügereihenfolge beizubehalten. Diese Garantie gilt ab Python 3.7. Daher basiert die Wörterbuchimplementierung nicht mehr ausschließlich auf einer Hash-Tabelle, obwohl bei ihrer Erstellung immer noch eine Hash-Tabelle verwendet wird.

Das obige ist der detaillierte Inhalt vonWarum erscheint mein Python-Wörterbuch geordnet, obwohl es ungeordnet ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn