【发布时间】:2020-11-14 09:44:51
【问题描述】:
注意:这不是询问 Python 字典是否保持其顺序。
问题:Python dict order 是否保证我可以教初学者他们可以依赖它?
有时我的 Python 学生认为 dict 会保持其顺序,因为它确实如此。但传统上,dict 被认为是无序的。
通常我教他们不要依赖这个命令,但我想知道它是否是 Python 的永久部分,以及我是否可以让他们依赖它。
【问题讨论】:
标签: python dictionary
注意:这不是询问 Python 字典是否保持其顺序。
问题:Python dict order 是否保证我可以教初学者他们可以依赖它?
有时我的 Python 学生认为 dict 会保持其顺序,因为它确实如此。但传统上,dict 被认为是无序的。
通常我教他们不要依赖这个命令,但我想知道它是否是 Python 的永久部分,以及我是否可以让他们依赖它。
【问题讨论】:
标签: python dictionary
您应该告诉他们,实际上 Python 3.7+ 的行为类似于 OrderedDict(Python 3.6 也是如此,但未强制执行),但字典不一定具有此特性,而这正是 Python 中的实现方式。
【讨论】:
以前,在 Python 3.6 中,这是 dict 实现的非官方特性。从 3.7 开始,它现在是 dict 的官方(指定)功能。
这种官方允许你以这种方式教授 Python dict(但不是一般的“字典”(地图、哈希等))。
实际上,如果没有明显的向后兼容性问题,就无法删除该功能,因此也不会。
使用OrderedDict 的其余原因涉及一些额外的功能,例如move_to_end() 和a few others,以及处理此规范的最新性:例如,如果您想在早期版本的 Python 中运行代码,或将有序性传达给非
了解这个新功能。
【讨论】:
虽然 python dict 现在按顺序保存,但依赖该属性是有风险的。
其中一个副作用是它会导致您的代码在旧版本的 CPython 上崩溃。
最好改用OrderedDict。
更多信息,您可以在这里查看:http://gandenberger.org/2018/03/10/ordered-dicts-vs-ordereddict/
【讨论】: