114

Python 3.7 更新日志

dict对象的插入顺序保存特性已被宣布为 Python 语言规范的官方部分。

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

4

1 回答 1

173

不,它在 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 增加了reversed()对常规 Python 迭代的支持,见issue33462dict

于 2018-06-15T09:20:41.903 回答