为什么散列的散列与散列不同

时间:2015-02-13 03:08:50

标签: python hash

你正确地读了这个问题。这是我的榜样。

 [in] >>> item = ('y', 4)
 [in] >>> hash(item)
[out] >>> -8853662433461058885
 [in] >>> hash(hash(item))
[out] >>> -1936133405819977032

在Python中,哈希是整数。具有相当小的绝对值的大多数整数具有普通的散列函数

 [in] >>> hash(3)
[out] >>> 3

我知道一些任意大的整数最终会散列到一个不同的,可能更小的数字。例如:

 [in] >>> pi = 314159265358979323846264338327950
 [in] >>> hash(pi)
[out] >>> 423427704026669588

我会假设任何散列函数的输出都是一个足够小的整数,这样当整数本身被散列时,它会自己返回一个值。这就是散列(hash(x))== hash(x)。为什么情况并非如此?

1 个答案:

答案 0 :(得分:0)

内置的hash()方法仅用于比较字典键。

来自hash()的{​​{3}}:

  

它们用于在字典中快速比较字典键   抬头。比较相等的数字值具有相同的哈希值   (即使它们的类型不同,如1和1.0的情况)。

如果您需要跨系统工作的哈希,请使用python documentation