看板 Python 關於我們 聯絡資訊
我知道set是無序的集合 我想問的是 若從同一個無重複行的文字檔一行行讀取並一個個丟進一個空set 最後觀察set中key的排列,發現每次的排列都不一樣 為什麼對同一個檔案進行同樣的操作卻會得到每次都不一樣的set? set中key的順序是如何決定的? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 209.107.210.176 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1552789435.A.281.html
Akkusaii3741: 我記得set裡面是隨便排欸03/17 14:01
所以想知道是怎麼隨便排
Akkusaii3741: https://reurl.cc/GjoxD 不知道有沒有用03/17 14:03
lemon651: 你自己都說是無序了...又回來問順序...03/17 14:05
所以想知道Python的底層是怎麼排列的。內建擲骰子決定如何插入key嗎? ※ 編輯: shala (205.185.214.165), 03/17/2019 14:12:55
djshen: 無序應該是指iterate時的順序和丟進去的順序不一樣03/17 14:09
djshen: 內部的順序應該和hash function有關03/17 14:11
謝謝給方向,我再了解看看 ※ 編輯: shala (205.185.214.165), 03/17/2019 14:20:11
TitanEric: python的set跟dict是用hash實作的 不像紅黑書 無序正常 03/17 14:27
ThxThx: CPython的id以及hash實作是跟記憶體位置有關 03/17 18:19
ThxThx: 所以每次插進去set裡面的key都會不一樣 03/17 18:19
adrianshum: 樓上大錯特錯。那只是 default 的 __hash__ 而已。 03/17 18:36
adrianshum: str 的__hash__ 是基於其內容的。 03/17 18:37
ThxThx: !!str的hash原來看內容,感謝糾正 03/17 18:41
ThxThx: 不過object是看位址吧? 03/17 18:41
HenryLiKing: 推!!!! 03/18 10:31