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
OrderedDicterstellen 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.
popitementfernt die Elemente in FIFO Reihenfolge. Es akzeptiert ein boolesches Argumentlast; wenn es aufTruegesetzt 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 Argumentlast; wenn es aufFalsegesetzt 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
