[问题] set中key的顺序是如何决定的?

楼主: shala (沙罗)   2019-03-17 10:23:53
我知道set是无序的集合
我想问的是
若从同一个无重复行的文字档一行行读取并一个个丢进一个空set
最后观察set中key的排列,发现每次的排列都不一样
为什么对同一个档案进行同样的操作却会得到每次都不一样的set?
set中key的顺序是如何决定的?
谢谢
作者: Akkusaii3741 (烤鸡好吃)   2019-03-17 14:01:00
我记得set里面是随便排欸https://reurl.cc/GjoxD 不知道有没有用
作者: lemon651 (小明)   2019-03-17 14:05:00
你自己都说是无序了...又回来问顺序...
作者: djshen (djshen)   2019-03-17 14:09:00
无序应该是指iterate时的顺序和丢进去的顺序不一样内部的顺序应该和hash function有关
作者: TitanEric (泰坦)   2019-03-17 14:27:00
python的set跟dict是用hash实作的 不像红黑书 无序正常
作者: ThxThx (洗洗睡)   2019-03-17 18:19:00
CPython的id以及hash实作是跟内存位置有关所以每次插进去set里面的key都会不一样
作者: adrianshum (Alien)   2019-03-17 18:36:00
楼上大错特错。那只是 default 的 __hash__ 而已。str 的__hash__ 是基于其内容的。
作者: ThxThx (洗洗睡)   2019-03-17 18:41:00
!!str的hash原来看内容,感谢纠正不过object是看位址吧?
作者: HenryLiKing (HenryLiKing)   2019-03-18 10:31:00
推!!!!

Links booklink

Contact Us: admin [ a t ] ucptt.com