我来到了这个问题,同时琢磨一下的顺序set,frozenset和dict.Python不保证任何排序,任何排序都与hash某个级别的值相关联.但是数字或字符串内置类型的值的哈希值是标准化的吗?换句话说,会
hash((a,b,c,d,e,f,g))
Run Code Online (Sandbox Code Playgroud)
有一个确定的值,如果a,b,c,d,e,f,g是数字值或str?
Ned*_*der 10
字符串和整数的哈希值绝对不是标准化的.它们可以随着Python的任何新实现而改变,包括在2.6.1和2.6.2之间,或者在Mac和相同版本的PC实现之间,等等.
但更重要的是,稳定的哈希值并不意味着可重复的迭代顺序.你可以不依赖于值的一组排序,永远.即使在一个过程中,两个集合也可以相等,并且不会以相同的顺序返回它们的值.如果一个集合有很多添加和删除,但另一个集合没有:
>>> a = set()
>>> for i in range(1000000): a.add(str(i))
...
>>> for i in range(6, 1000000): a.remove(str(i))
...
>>> b = set()
>>> for i in range(6): b.add(str(i))
...
>>> a == b
True
>>> list(a)
['1', '5', '2', '0', '3', '4']
>>> list(b)
['1', '0', '3', '2', '5', '4']
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
482 次 |
| 最近记录: |