OrderedDict 在 Python 3.7 中会变得多余吗?
Will OrderedDict become redundant in Python 3.7?
the insertion-order preservation nature of dict objects has been declared to be an official part of the Python language spec.
这是否意味着 OrderedDict
将变得多余?我能想到的唯一用途是保持与旧版本 Python 的向后兼容性,旧版本不保留普通词典的插入顺序。
不,它不会在 Python 3.7 中变得多余,因为 OrderedDict
不仅仅是一个保留插入顺序的 dict
,它还提供了一个顺序相关的方法,OrderedDict.move_to_end()
, and supports reversed()
迭代*.
此外,与 OrderedDict
的相等比较是顺序敏感的,Python 3.7 中的 dict
仍然不是这种情况,例如:
>>> OrderedDict([(1,1), (2,2)]) == OrderedDict([(2,2), (1,1)])
False
>>> dict([(1,1), (2,2)]) == dict([(2,2), (1,1)])
True
两个相关问题 and 。
* 支持 reversed()
常规 Python dict
的迭代是为 Python 3.8 添加的,请参阅 issue33462
the insertion-order preservation nature of dict objects has been declared to be an official part of the Python language spec.
这是否意味着 OrderedDict
将变得多余?我能想到的唯一用途是保持与旧版本 Python 的向后兼容性,旧版本不保留普通词典的插入顺序。
不,它不会在 Python 3.7 中变得多余,因为 OrderedDict
不仅仅是一个保留插入顺序的 dict
,它还提供了一个顺序相关的方法,OrderedDict.move_to_end()
, and supports reversed()
迭代*.
此外,与 OrderedDict
的相等比较是顺序敏感的,Python 3.7 中的 dict
仍然不是这种情况,例如:
>>> 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