[英]Why is the Python dict already sorted?
我有一个排序的词频文件如下:
the 33333
good 2333
bad 1233
book 500
...
当我从文件中读取它而不是 OrderedDict 后创建一个 word_freq = {} dict 时,令人惊讶的是,仍然保持按 freq 的降序。 我应该使用 OrderedDict 吗?
这是为什么?
TLDR :如果您按大小插入它们并使用 Python >= 3.7(或 CPython >= 3.6),则使用常规字典是安全的。 如果你不 - 使用OrderedDict
。
字典按 Python 3.6 中的插入顺序排序。 这个命令只是一个实现细节,Python 3.6 的发行说明如下:
这个新实现的顺序保留方面被认为是一个实现细节,不应依赖(这可能会在未来发生变化,但在更改语言规范之前,希望在几个版本的语言中使用这个新的 dict 实现为所有当前和未来的 Python 实现强制要求保留顺序的语义;这也有助于保持与旧版本的语言的向后兼容性,其中随机迭代顺序仍然有效,例如 Python 3.5)。
从 Python 3.7 开始,Python 标准要求字典应按插入顺序排序。
免责声明:以下仅适用于 Python 3.6 及更高版本
当您读取文件并将其插入 dict 时,除非您有意将元素随机插入到 dict 中,否则它们将保持与文件相同的顺序。 它没有对 dict 重新排序,但它只是保留了文件所具有的有序版本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.