你正确地读了这个问题。这是我的榜样。
[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)。为什么情况并非如此?
答案 0 :(得分:0)
内置的hash()方法仅用于比较字典键。
来自hash()
的{{3}}:
它们用于在字典中快速比较字典键 抬头。比较相等的数字值具有相同的哈希值 (即使它们的类型不同,如1和1.0的情况)。
如果您需要跨系统工作的哈希,请使用python documentation。