Heim > Backend-Entwicklung > Python-Tutorial > Behalten Python 3.6-Wörterbücher die Einfügereihenfolge bei und wie wird dies implementiert?

Behalten Python 3.6-Wörterbücher die Einfügereihenfolge bei und wie wird dies implementiert?

Patricia Arquette
Freigeben: 2024-12-30 09:23:20
Original
856 Leute haben es durchsucht

Do Python 3.6  Dictionaries Maintain Insertion Order and How Is This Implemented?

Sind Wörterbücher in Python 3.6 geordnet?

In Python-Versionen 3.6 und höher weisen Wörterbücher eine Einfügungsreihenfolge auf, was bedeutet, dass sie die Reihenfolge beibehalten, in der sie eingefügt werden Schlüssel-Wert-Paare werden hinzugefügt. Dieses Verhalten ist nicht für alle Python-Implementierungen garantiert und gilt ausschließlich für den CPython-Interpreter.

Verbesserte Effizienz der Python 3.6-Wörterbuchimplementierung

Die neue Wörterbuchimplementierung in Python 3.6 verwendet zwei Arrays, um sowohl die Einfügereihenfolge als auch den effizienten Hash beizubehalten Suchvorgänge.

  • dk_entries: Enthält Einträge (Schlüssel-Wert-Paare) in der Reihenfolge der Einfügung.
  • dk_indices: Speichert entsprechende Indizes zu jedem Eintrag in dk_entries und fungiert als Hash Tabelle.

Dieser Ansatz nutzt die kleinere Größe von Ganzzahl-Arrays (dk_indices) im Vergleich zum zuvor verwendeten spärlichen Array von Schlüsselwerteinträgen (dk_entries), was zu einem kompakteren Speicherbedarf führt. Das Sparse-Array, das zuvor zur Leistungsoptimierung zur Aufnahme einer festen Größe von 2/3 Leerräumen zugewiesen wurde, ist nicht mehr erforderlich.

Visualisierung von Datenstrukturen

Ein Beispielwörterbuch:

d = {'timmy': 'red', 'barry': 'green', 'guido': 'blue'}
Nach dem Login kopieren

Alte Daten Struktur:

entries = [['--', '--', '--'],
           [-8522787127447073495, 'barry', 'green'],
           ['--', '--', '--'],
           ['--', '--', '--'],
           ['--', '--', '--'],
           [-9092791511155847987, 'timmy', 'red'],
           ['--', '--', '--'],
           [-6480567542315338377, 'guido', 'blue']]
Nach dem Login kopieren

Neue Datenstruktur:

indices =  [None, 1, None, None, None, 0, None, 2]
entries =  [[-9092791511155847987, 'timmy', 'red'],
            [-8522787127447073495, 'barry', 'green'],
            [-6480567542315338377, 'guido', 'blue']]
Nach dem Login kopieren

Wie dargestellt, trennt die neue Struktur Indizes und Einträge und ermöglicht so eine effizientere Speicherzuweisung und schnellere Hash-Tabellensuche aufgrund der kleineren Größe der Indizes Array.

Fazit

Die erweiterte Wörterbuchimplementierung in Python 3.6 behält effektiv die Einfügereihenfolge bei und optimiert gleichzeitig die Speichernutzung durch die Verwendung separater Eintrags- und Indexarrays. Diese Optimierung führt zu einer effizienteren Darstellung und Verwaltung von Wörterbüchern, insbesondere in Szenarien mit Speicherbeschränkungen oder wenn große Wörterbücher verarbeitet werden.

Das obige ist der detaillierte Inhalt vonBehalten Python 3.6-Wörterbücher die Einfügereihenfolge bei und wie wird dies implementiert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage