1

Why does Python's native hash() generate a collision for -1 and -2?

>>>> hash(-1)
-2
>>>> hash(-2)
-2

My understanding is that Python's hash will simply output the exact value of the number fed in - this seems to hold upto 2^60 and -2^60:

>>>> hash(2**8)
256
>>>> hash(-2**8)
-256
>>> hash(2**60)
1152921504606846976
>>> hash(-2**60)
-1152921504606846976

What is special about -1 in this instance?

Akshat Mahajan
  • 9,543
  • 4
  • 35
  • 44

0 Answers0