Станет ли OrderedDict избыточным в Python 3.7?

90

Из журнала изменений Python 3.7 :

характер сохранения порядка вставки объектов dict был объявлен официальной частью спецификации языка Python.

Означает ли это, что OrderedDictэто станет лишним? Единственное, что я могу придумать, это поддерживать обратную совместимость со старыми версиями Python, которые не сохраняют порядок вставки для обычных словарей.

Джеймс Хью
источник
См. Также: stackoverflow.com/questions/34305003/…
Борис

Ответы:

132

Нет, он не станет избыточным в Python 3.7, потому что OrderedDictэто не просто a, 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, см. Issue33462

Chris_Rands
источник
Здесь очень актуален момент о чувствительности к порядку при сравнении.
Тим Сков Якобсен,