簡體   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