Best practice for caching hash

Greg Ewing greg.ewing at canterbury.ac.nz
Wed Mar 16 02:36:16 EDT 2022


On 16/03/22 6:58 pm, Chris Angelico wrote:
> And Python's own integers hash to themselves, 
 > which isn't what I'd call "widely distributed", but which
 > works well in practice.

Not exactly, they seem to be limited to 60 bits:

 >>> hex(hash(0xfffffffffffffff))
'0xfffffffffffffff'
 >>> hex(hash(0x1fffffffffffffff))
'0x0'

And up to that limit they're as widely distributed as you
can get -- each integer hashes to a unique value!

But keep in mind that the hash value itself is not directly
used to locate a dict slot -- there is extra scrambling that
goes on in the dict code.

-- 
Greg


More information about the Python-list mailing list