Будет ли OrderedDict избыточным в Python 3.7?

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

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

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

Ответы

Ответ 1

Нет, это не станет излишним, поскольку OrderedDict не только dict, который сохраняет порядок вставки, он также предлагает зависимые методы заказа, как OrderedDict.move_to_end() и поддерживает reversed() итерацию *. Более того, сравнения сравнений с OrderedDict чувствительны к порядку, и это все еще не относится к dict в Python 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