连同推文有几点值得留意
没错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 的顺序一样。