dict对象has been declared的插入顺序保存性质是Python语言规范的官方部分。
这是否意味着OrderedDict
将变得多余?我能想到的唯一用途是保持与旧版本Python的向后兼容性,这些版本不保留普通字典的插入顺序。
不,它不会在Python 3.7中变得多余,因为OrderedDict
不仅仅是保留插入顺序的dict
,它还提供依赖于顺序的方法OrderedDict.move_to_end()
,并支持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
*为Python 3.8添加了对常规Python reversed()
的dict
迭代的支持,请参阅issue33462