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


90

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

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

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


Ответы:


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


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