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 Argumentlast
, wenn es aufTrue
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 Argumentlast
, wenn es aufFalse
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