作者shala (沙罗是转换後的文字档打m)
看板Python
标题[问题] set中key的顺序是如何决定的?
时间Sun Mar 17 10:23:53 2019
我知道set是无序的集合
我想问的是
若从同一个无重复行的文字档一行行读取并一个个丢进一个空set
最後观察set中key的排列,发现每次的排列都不一样
为什麽对同一个档案进行同样的操作却会得到每次都不一样的set?
set中key的顺序是如何决定的?
谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 209.107.210.176
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1552789435.A.281.html
1F:推 Akkusaii3741: 我记得set里面是随便排欸03/17 14:01
所以想知道是怎麽随便排
3F:推 lemon651: 你自己都说是无序了...又回来问顺序...03/17 14:05
所以想知道Python的底层是怎麽排列的。内建掷骰子决定如何插入key吗?
※ 编辑: shala (205.185.214.165), 03/17/2019 14:12:55
4F:→ djshen: 无序应该是指iterate时的顺序和丢进去的顺序不一样03/17 14:09
5F:→ djshen: 内部的顺序应该和hash function有关03/17 14:11
谢谢给方向,我再了解看看
※ 编辑: shala (205.185.214.165), 03/17/2019 14:20:11
6F:推 TitanEric: python的set跟dict是用hash实作的 不像红黑书 无序正常 03/17 14:27
7F:推 ThxThx: CPython的id以及hash实作是跟记忆体位置有关 03/17 18:19
8F:→ ThxThx: 所以每次插进去set里面的key都会不一样 03/17 18:19
9F:→ adrianshum: 楼上大错特错。那只是 default 的 __hash__ 而已。 03/17 18:36
10F:→ adrianshum: str 的__hash__ 是基於其内容的。 03/17 18:37
11F:→ ThxThx: !!str的hash原来看内容,感谢纠正 03/17 18:41
12F:→ ThxThx: 不过object是看位址吧? 03/17 18:41
13F:推 HenryLiKing: 推!!!! 03/18 10:31