Чи стане OrderedDict зайвим у Python 3.7?


90

З журналу змін Python 3.7 :

характер збереження в порядку вставки об'єктів dict оголошено офіційною частиною специфікації мови Python.

Чи означає це, що OrderedDictстане зайвим? Єдине використання, про яке я можу думати, це підтримка зворотної сумісності зі старими версіями Python, які не зберігають порядок вставки для звичайних словників.


Відповіді:


132

Ні, це не стане зайвим у Python 3.7, оскільки OrderedDictце не просто dictте, що зберігає порядок вставки, воно також пропонує метод, що залежить від порядку OrderedDict.move_to_end(), і підтримує reversed()ітерацію *.

Більше того, порівняння рівності з OrderedDictє чутливими до порядку, і це все одно не стосується dictPython 3.7, наприклад:

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

Два відповідні питання тут і тут .

* Підтримка reversed()ітерації звичайного Python dictдодана для Python 3.8, див. Випуск33462


Точка щодо чутливості замовлення при порівнянні тут дуже актуальна.
Тім Сков Якобсен
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.