Ordered Dictionary – Einführung in OrderedDict
Beispiel
Ein geordnetes Wörterbuch ähnelt einem normalen Wörterbuch, außer dass es die Reihenfolge aufzeichnen kann, in der Elemente darin eingefügt werden, während ein normales Wörterbuch in jeder beliebigen Reihenfolge iteriert. Siehe Beispiel unten:
import collections print 'Regular dictionary:' d = {} d['a'] = 'A' d['b'] = 'B' d['c'] = 'C' d['d'] = 'D' d['e'] = 'E' for k, v in d.items(): print k, v print '\nOrderedDict:' d = collections.OrderedDict() d['a'] = 'A' d['b'] = 'B' d['c'] = 'C' d['d'] = 'D' d['e'] = 'E' for k, v in d.items(): print k, v
Die Laufergebnisse sind wie folgt:
-> python test7.py Regular dictionary: a A c C b B e E d D OrderedDict: a A b B c C d D e E
Sie können sehen, dass Wörterbücher normalerweise nicht in der Einfügereihenfolge durchlaufen werden.
Gleichberechtigung
Um festzustellen, ob zwei geordnete Felder gleich sind (==), müssen Sie berücksichtigen, ob die Reihenfolge der Elementeinfügung gleich ist
import collections print 'dict :', d1 = {} d1['a'] = 'A' d1['b'] = 'B' d1['c'] = 'C' d1['d'] = 'D' d1['e'] = 'E' d2 = {} d2['e'] = 'E' d2['d'] = 'D' d2['c'] = 'C' d2['b'] = 'B' d2['a'] = 'A' print d1 == d2 print 'OrderedDict:', d1 = collections.OrderedDict() d1['a'] = 'A' d1['b'] = 'B' d1['c'] = 'C' d1['d'] = 'D' d1['e'] = 'E' d2 = collections.OrderedDict() d2['e'] = 'E' d2['d'] = 'D' d2['c'] = 'C' d2['b'] = 'B' d2['a'] = 'A' print d1 == d2
Die Laufergebnisse sind wie folgt:
-> python test7.py dict : True OrderedDict: False
Bei der Beurteilung, ob ein geordnetes Wörterbuch anderen gewöhnlichen Wörterbüchern gleicht, müssen Sie nur beurteilen, ob der Inhalt gleich ist.
Achtung
Obwohl die Konstruktor- oder update()-Methode von OrderedDict Schlüsselwortparameter akzeptiert, geht die Reihenfolge der Schlüsselwortparameter verloren, da Python-Funktionsaufrufe ungeordnete Wörterbücher zum Übergeben von Parametern verwenden, sodass das geordnete Wörterbuch erstellt wird. Die Reihenfolge ist nicht garantiert.
Referenzmaterialien
https://docs.python.org/2/library/collections.html#collections.OrderedDict
https://pymotw.com/2/collections/ordereddict.html