Из журнала изменений Python 3.7 :
характер сохранения порядка вставки объектов dict был объявлен официальной частью спецификации языка Python.
Означает ли это, что OrderedDict
это станет лишним? Единственное, что я могу придумать, это поддерживать обратную совместимость со старыми версиями Python, которые не сохраняют порядок вставки для обычных словарей.
python
python-3.x
dictionary
python-3.7
ordereddict
Джеймс Хью
источник
источник
Ответы:
Нет, он не станет избыточным в Python 3.7, потому что
OrderedDict
это не просто a,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()
итерации обычного Pythondict
добавлена для Python 3.8, см. Issue33462источник