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

Jam*_*iew 55 python dictionary python-3.x python-3.7 ordereddict

Python 3.7更改日志:

dict对象的插入顺序保存性质已被声明为Python语言规范的官方部分.

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

Chr*_*nds 81

不,它不会变得多余,因为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
Run Code Online (Sandbox Code Playgroud)

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

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

  • @leggewie 在 Python 3.8(和 3.9)中,关于相等比较的点在 `OrderedDict` 和常规 `dict` 之间仍然不同 - 我不希望这种情况很快改变 (6认同)
  • 比较时关于顺序敏感性的观点在这里非常有效。 (4认同)