OrderedDict在Python 3.7中会变得多余吗?


90

Python 3.7 changelog中

dict对象的插入顺序保留性质已声明是Python语言规范的正式组成部分。

这是否意味着OrderedDict将变得多余?我能想到的唯一用途是保持与旧版本Python的向后兼容性,而旧版本的Python不保留常规词典的插入顺序。


Answers:


132

不,它不会在Python 3.7中变得多余,因为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

这里这里有两个相关的问题。

*为Python 3.8添加了reversed()对常规Python迭代的支持dict,请参见issue33462


比较时关于顺序敏感性的观点在这里非常有效。
蒂姆·斯科夫·雅各布森
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.