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

时间:2018-06-15 09:16:38

标签: python python-3.x dictionary python-3.7 ordereddict

来自Python 3.7 changelog

  

dict个对象has been declared的插入顺序保存性质是Python语言规范的官方部分。

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

1 个答案:

答案 0 :(得分:59)

不,它不会在Python 3.7中变得多余,因为OrderedDict不仅仅是保留插入顺序的dict,它还提供依赖于顺序的方法OrderedDict.move_to_end(),并支持{ {3}}迭代*。

此外,与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()here

*为Python 3.8添加了对常规Python reversed()的{​​{1}}次迭代的支持,请参阅here