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