Heim >Backend-Entwicklung >Python-Tutorial >Wird bei Python-Wörterbüchern garantiert, dass die Einfügereihenfolge in 3.6 beibehalten wird?

Wird bei Python-Wörterbüchern garantiert, dass die Einfügereihenfolge in 3.6 beibehalten wird?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-20 19:37:141033Durchsuche

Are Python Dictionaries Guaranteed to Maintain Insertion Order in 3.6 ?

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:

  • dk_entries: Enthält Schlüssel- und Werteinträge in der Reihenfolge Einfügung.
  • dk_indices: Speichert Indizes in dk_entries und fungiert als Hash-Tabelle.

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!

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