. Python OrderedDict

Python OrderedDict ist eine Unterklasse von dict, die die Reihenfolge der Elemente beibehält. Wenn wir über ein OrderedDict iterieren, werden die Elemente in der Reihenfolge zurückgegeben, in der sie eingefügt wurden. Ein normales Wörterbuch verfolgt nicht die Einfügereihenfolge. Daher werden beim Iterieren darüber Elemente in einer beliebigen Reihenfolge zurückgegeben. Wenn wir sicherstellen möchten, dass Elemente in der Reihenfolge zurückgegeben werden, in der sie eingefügt wurden, können wir OrderedDict verwenden.

Python OrderedDict

  • OrderedDict ist Teil des Moduls python collections.
  • Wir können ein leeres OrderedDict erstellen und Elemente hinzufügen. Wenn wir ein OrderedDict erstellen, indem wir ein dict-Argument übergeben, kann die Reihenfolge verloren gehen, da dict die Einfügereihenfolge nicht beibehält.
  • Wenn ein Element in OrderedDict überschrieben wird, wird seine Position beibehalten.
  • Wenn ein Element gelöscht und erneut hinzugefügt wird, wird es dann ans Ende verschoben.
  • OrderedDict popitem entfernt die Elemente in FIFO-Reihenfolge. Es akzeptiert ein boolesches Argument last, wenn es auf True gesetzt ist, werden Elemente in LIFO-Reihenfolge zurückgegeben.
  • Wir können ein Element an den Anfang oder das Ende des OrderedDict verschieben, indem wir die Funktion move_to_end verwenden. Sie akzeptiert ein boolesches Argument last, wenn es auf False gesetzt ist, dann wird das Element an den Anfang des geordneten Dicts verschoben.
  • Von Python 3.6 an wird die Reihenfolge für Schlüsselwortargumente, die dem OrderedDict-Konstruktor übergeben werden, beibehalten, siehe PEP-468.
  • Wir können die Funktion reversed() mit OrderedDict verwenden, um Elemente in umgekehrter Reihenfolge zu iterieren.
  • Gleichheitstests zwischen OrderedDict-Objekten sind reihenfolgeempfindlich und werden als list(od1.items())==list(od2.items()) implementiert.
  • Gleichheitstests zwischen OrderedDict und anderen Mapping-Objekten sind reihenfolgeunempfindlich wie normale Wörterbücher. Dies erlaubt es, OrderedDict-Objekte überall dort zu verwenden, wo ein normales Wörterbuch verwendet wird.

Python OrderedDict Beispiele

Lassen Sie uns einige Codebeispiele für Python OrderedDict betrachten.

Erstellen eines OrderedDict-Objekts

from collections import OrderedDict

# Erstellen eines einfachen Dict
my_dict = {'kiwi': 4, 'apple': 5, 'cat': 3}

# Erstellen eines leeren geordneten Dict
ordered_dict = OrderedDict()
print(ordered_dict)

# Erstellen eines geordneten Dict aus einem Dict
ordered_dict = OrderedDict(my_dict)
print(ordered_dict)

Output:

OrderedDict()
OrderedDict([('kiwi', 4), ('apple', 5), ('cat', 3)])

Hinzufügen, Ersetzen, Entfernen von Elementen aus OrderedDict

# Elemente zum Wörterbuch hinzufügen
ordered_dict['dog'] = 3

# Ersetzen eines Wörterbuchschlüsselwerts
ordered_dict['kiwi'] = 10
print(ordered_dict)

# Entfernen und Hinzufügen eines Werts
ordered_dict.pop('kiwi')
print(ordered_dict)
ordered_dict['kiwi'] = 4
print(ordered_dict)

Ausgabe:

OrderedDict([('kiwi', 10), ('apple', 5), ('cat', 3), ('dog', 3)])
OrderedDict([('apple', 5), ('cat', 3), ('dog', 3)])
OrderedDict([('apple', 5), ('cat', 3), ('dog', 3), ('kiwi', 4)])

Beispiel für OrderedDict move_to_end

# Apfel an das Ende verschieben und Hund an den Anfang
ordered_dict.move_to_end('apple')
ordered_dict.move_to_end('dog', False)
print(ordered_dict)

Ausgabe:

OrderedDict([('dog', 3), ('cat', 3), ('kiwi', 4), ('apple', 5)])

Beispiel für OrderedDict popitem

# Letztes Element entfernen
item = ordered_dict.popitem(True)
print(item)
print(ordered_dict)

Ausgabe:

('apple', 5)
OrderedDict([('dog', 3), ('cat', 3), ('kiwi', 4)])

Umgekehrte Iteration von OrderedDict

# Umgekehrte Iteration
for item in reversed(ordered_dict):
    print(item)

Ausgabe:

kiwi
cat
dog

Beispiel für Tests zur Gleichheit von OrderedDicts

# Gleichheitstests
d1 = {'a': 'A', 'b': 'B'}
d2 = {'b': 'B', 'a': 'A'}

od1 = OrderedDict({'a': 'A', 'b': 'B'})
od2 = OrderedDict({'b': 'B', 'a': 'A'})

print(d1 == d2)
print(od1 == od2)
print(d1 == od1)

Ausgabe:

True
False
True

Sie können den vollständigen Beispielcode aus unserem GitHub-Repository herunterladen.

Referenz: Python-Dokumentation

Source:
https://www.digitalocean.com/community/tutorials/python-ordereddict