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