Wird OrderedDict in Python 3.7 überflüssig?


90

Aus dem Python 3.7-Änderungsprotokoll :

Die Beibehaltung der Einfügungsreihenfolge von diktierten Objekten wurde als offizieller Bestandteil der Python-Sprachspezifikation deklariert .

Würde dies bedeuten, dass OrderedDictdas überflüssig wird? Die einzige Verwendung, die ich mir vorstellen kann, besteht darin, die Abwärtskompatibilität mit älteren Python-Versionen aufrechtzuerhalten, bei denen die Einfügereihenfolge für normale Wörterbücher nicht beibehalten wird.


Antworten:


132

Nein, es wird in Python 3.7 nicht redundant, da OrderedDictes nicht nur dictdie Einfügereihenfolge beibehält, sondern auch eine auftragsabhängige Methode OrderedDict.move_to_end()bietet und die reversed()Iteration * unterstützt .

Darüber hinaus sind Gleichheitsvergleiche mit OrderedDictauftragsabhängig, und dies ist dictin Python 3.7 immer noch nicht der Fall , zum Beispiel:

>>> OrderedDict([(1,1), (2,2)]) == OrderedDict([(2,2), (1,1)]) 
False
>>> dict([(1,1), (2,2)]) == dict([(2,2), (1,1)]) 
True

Zwei relevante Fragen hier und hier .

* Unterstützung für die reversed()Iteration von regulärem Python wurde dictfür Python 3.8 hinzugefügt, siehe Ausgabe 33462


Der Punkt über die Bestellempfindlichkeit beim Vergleich ist hier sehr gültig.
Tim Skov Jacobsen
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.