繁体   English   中英

为什么 Python dict 已经排序?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM