PTT
Submit
Submit
選擇語言
正體中文
简体中文
PTT
Python
Re: [問題] set中key的順序是如何決定的?
作者:
adrianshum
(Alien)
2019-03-17 18:22:44
連同推文有幾點值得留意
沒錯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 的順序一樣。
作者:
shala
(沙羅)
2019-03-17 22:49:00
謝謝。有看到3.4的使用者討論randomise hash,所以至少從3.4開始
作者: LiloHuang (十年一刻)
2019-03-17 22:55:00
精確來說從 Python 3.3 預設啟用
http://goo.gl/Znb7Hu
文件也有提到為何需要做 hash randomization :)
作者: champion516
2019-03-18 16:42:00
學長好
繼續閱讀
Re: [問題] set中key的順序是如何決定的?
LiloHuang
[問題] set中key的順序是如何決定的?
shala
[問題] 請問函式傳入物件當引數
jijuan
[問題] 把圖片中的黑色變成白色
seo074482
[問題] 為何更新Anaconda3之後就無法使用Jupyter Notebook?
flightheory
selenium 如何取得 canvas element
m87dd05
[問題] 製作一個DDE server
instar7
[問題] python讀SAS檔問題
disney82231
[問題]filedialog 相關問題
yimean
[閒聊] 如果大家接案爬蟲 收費大概會落在多少
nini200
Links
booklink
Contact Us: admin [ a t ] ucptt.com