Geordnetes Wörterbuch – 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 in es eingefügt werden, während ein normales Das Wörterbuch wird in beliebiger Reihenfolge iterieren. Siehe das 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 laufenden Ergebnisse lauten 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.
Gleichheit
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 laufenden Ergebnisse sind wie folgt:
-> python test7.py dict : True OrderedDict: False
Wenn Sie beurteilen, ob ein geordnetes Wörterbuch anderen gewöhnlichen Wörterbüchern gleich ist, müssen Sie nur beurteilen, ob der Inhalt gleich ist.
Hinweis
Obwohl der Konstruktor oder die 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 Das erstellte geordnete Wörterbuch kann seine Reihenfolge nicht garantieren.