Sind Wörterbücher in Python 3.6 geordnet?
Ab Python 3.6 sind Wörterbücher in der CPython-Implementierung einfügungsgeordnet, was bedeutet, dass sie die Reihenfolge beibehalten der eingefügten Artikel. Dieses Verhalten gilt jedoch als Implementierungsdetail und sollte nicht als verlässlich angesehen werden.
Garantierte Einfügungsreihenfolge in Python 3.7
In Python 3.7 wurde die Einfügungsreihenfolge für Wörterbücher zu einer garantierte Sprachfunktion. Dies bedeutet, dass alle konformen Python-Implementierungen ein Wörterbuch mit Einfügungsreihenfolge anbieten müssen.
Leistungsverbesserungen mit Einfügungsreihenfolge
Die neue Wörterbuchimplementierung in Python 3.6 erreicht Einfügungsreihenfolge durch Beibehaltung von zwei Arrays:
Dieses Design reduziert den Speicheraufwand, indem nur die erforderlichen Einträge gespeichert werden und ein spärliches Array von Indizes verwendet wird. Die vorherige Implementierung hat ein spärliches Array von Schlüssel- und Werteinträgen zugewiesen, was zu leeren Leerzeichen führte.
Visualisierung der Datenstruktur
Zum Beispiel das Wörterbuch { 'timmy': ' red', 'barry': 'green', 'guido': 'blue' } wird gespeichert als:
indices = [None, 1, None, None, None, 0, None, 2] entries = [[-9092791511155847987, 'timmy', 'red'], [-8522787127447073495, 'barry', 'green'], [-6480567542315338377, 'guido', 'blue']]
Im alten Design, dort Es gäbe zahlreiche Leerräume, um Kollisionen zu minimieren. Der neue Ansatz reduziert die Speichernutzung, indem die Sparseness in das Index-Array verschoben wird.
Zusammenfassend lässt sich sagen, dass die Einfügungsreihenfolge in Python 3.6-Wörterbüchern eine erhebliche Verbesserung darstellt, die die Speichereffizienz erhöht und Wörterbücher in allen Python-Implementierungen zuverlässiger macht.
Das obige ist der detaillierte Inhalt vonWird bei Python-Wörterbüchern garantiert, dass die Einfügereihenfolge in 3.6 beibehalten wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!