Website-Suche

Python OrderedDict


Ein Python OrderedDict ist eine Unterklasse von dict, die die Reihenfolge der Einfügungen 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 reguläres Dictionary verfolgt nicht die Reihenfolge der Einfügungen. Daher werden beim Iterieren über ein solches Dictionary die Elemente in einer willkürlichen Reihenfolge zurückgegeben. Wenn wir sicherstellen möchten, dass die Elemente in der Reihenfolge zurückgegeben werden, in der sie eingefügt wurden, können wir OrderedDict verwenden.

Python OrderedDict

  • OrderedDict ist Teil des Python-Collections-Moduls.
  • 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üge-Reihenfolge nicht beibehält.
  • Wenn ein Element im OrderedDict überschrieben wird, bleibt seine Position erhalten.
  • Wenn ein Element gelöscht und wieder hinzugefügt wird, wird es an das Ende verschoben.
  • popitem entfernt die Elemente in FIFO Reihenfolge. Es akzeptiert ein boolesches Argument last; wenn es auf True gesetzt ist, werden die Elemente in LIFO Reihenfolge zurückgegeben.
  • Wir können ein Element mit der move_to_end-Funktion an den Anfang oder das Ende des OrderedDict verschieben. Es akzeptiert ein boolesches Argument last; wenn es auf False gesetzt ist, wird das Element an den Anfang des ordentlichen Dictionnaires verschoben.
  • Seit Python 3.6 wird die Reihenfolge für Schlüsselwortargumente, die an den OrderedDict-Konstruktor übergeben werden, beibehalten. Siehe PEP-468.
  • Wir können die Funktion reversed() zusammen mit OrderedDict verwenden, um Elemente in umgekehrter Reihenfolge zu iterieren.
  • Vergleichstests zwischen OrderedDict-Objekten sind empfindlich gegenüber der Reihenfolge und werden als list(od1.items())==list(od2.items()) implementiert.
  • Gleichheitstests zwischen OrderedDict und anderen Mapping-Objekten sind ordnungsunempfindlich wie reguläre Dictionaries. Dies ermöglicht es, dass OrderedDict-Objekte überall dort verwendet werden können, wo ein reguläres Dictionary verwendet wird.

Beispiele für Python OrderedDict

Lass uns einige Codebeispiele von Python OrderedDict ansehen.

Erstellen eines OrderedDict-Objekts

from collections import OrderedDict

creating a simple dict
my_dict = {'kiwi': 4, 'apple': 5, 'cat': 3}

creating empty ordered dict
ordered_dict = OrderedDict()
print(ordered_dict)

creating ordered dict from dict
ordered_dict = OrderedDict(my_dict)
print(ordered_dict)

Ausgabe :

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

Hinzufügen, Ersetzen, Entfernen von Elementen aus OrderedDict

adding elements to dict
ordered_dict['dog'] = 3

replacing a dict key value
ordered_dict['kiwi'] = 10
print(ordered_dict)

removing and adding a value
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 move_to_end in OrderedDict

moving apple to end and dog to start
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 popitem von OrderedDict

pop last item
item = ordered_dict.popitem(True)
print(item)
print(ordered_dict)

Ausgabe :

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

Bestellte Wörterbuch Rückwärtsiteration

reversed iteration
for item in reversed(ordered_dict):
    print(item)

Ausgabe :

kiwi
cat
dog

Beispiel für Gleichheitstests von OrderedDict

equality tests
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 von unserem GitHub-Repository herunterladen.

Referenz: Python-Dokumentation