I'm not sure how to really motivate this question, but in playing around with integer hashes in Python (3.14.3, but I imagine this has been the case for many versions), I noticed that for almost any int z, we have hash(z) == z (ignoring numbers larger than machine ints). This makes a ton of sense as hash(val) returns an int, and if val is an int to begin with, why make it more complicated? However, the lone exception I found is hash(-1) == -2. I'm certain there must be a reason for this implementation choice, but I've been unable to find one in my searches.