Re: [問題] set中key的順序是如何決定的?
連同推文有幾點值得留意
沒錯dict和set 內部都是hash table, 所以內部
的儲存次序和hash 有關,也即是沒特別的順
序。
但在 python 3.6 開始(在3.7 成為標準),
Dict 的iterate 順序則和插入順序一樣。
可是set 並沒這改動。如果明白hash table
的運作,會明白正常來說,同樣的輸入會
形成一樣的儲存順序(同樣的內容會算出同樣
的 hash) 。那為什麼會形成原問者提到:同樣
的檔案,出來的 set 的順序會不一樣,那是
由於在某版本開始的 python(3.4 3.5 左右吧?
忘了)會 randomise hash 的計算,讓每個
Process 算出來的hash 不一樣。
我猜大概原問者是讀進文字檔再印出set, 然
後同樣的程式跑兩次,看到不一樣的順序。
假如改一下,同一個程序,把「讀同一檔、
放進set 、印出set」連跑兩次,應該會發
現兩次的set 的順序一樣。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 119.236.162.182
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1552818167.A.0BF.html
推
03/17 22:49,
5年前
, 1F
03/17 22:49, 1F
→
03/17 22:49,
5年前
, 2F
03/17 22:49, 2F
→
03/17 22:55,
5年前
, 3F
03/17 22:55, 3F
→
03/17 22:59,
5年前
, 4F
03/17 22:59, 4F
推
03/18 16:42,
5年前
, 5F
03/18 16:42, 5F
討論串 (同標題文章)
完整討論串 (本文為第 3 之 3 篇):