作者:
shala (沙羅)
2019-03-17 10:23:53我知道set是無序的集合
我想問的是
若從同一個無重複行的文字檔一行行讀取並一個個丟進一個空set
最後觀察set中key的排列,發現每次的排列都不一樣
為什麼對同一個檔案進行同樣的操作卻會得到每次都不一樣的set?
set中key的順序是如何決定的?
謝謝
作者:
djshen (djshen)
2019-03-17 14:09:00無序應該是指iterate時的順序和丟進去的順序不一樣內部的順序應該和hash function有關
python的set跟dict是用hash實作的 不像紅黑書 無序正常
作者:
ThxThx (洗洗睡)
2019-03-17 18:19:00CPython的id以及hash實作是跟記憶體位置有關所以每次插進去set裡面的key都會不一樣
樓上大錯特錯。那只是 default 的 __hash__ 而已。str 的__hash__ 是基於其內容的。
作者:
ThxThx (洗洗睡)
2019-03-17 18:41:00!!str的hash原來看內容,感謝糾正不過object是看位址吧?