[issue34751] Hash collisions for tuples
Jeroen Demeyer
report at bugs.python.org
Mon Sep 24 06:01:11 EDT 2018
Jeroen Demeyer <J.Demeyer at UGent.be> added the comment:
> stuff like "t += t >> 16" is a many-to-one function, not a permutation
Yes, I am aware of that. However, the number of collisions here is really quite small. It's very unlikely to hit one by accident.
I also chose >> over << for two reasons:
1. It brings the high-order in play: https://bugs.python.org/msg326117
2. It avoids collisions on the low-order bits: when you do t ^= t << 7, then you are not changing the lower 7 bits at all. So applications using hash(x) % 128 will still see all the problems that we are trying to fix.
----------
_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue34751>
_______________________________________
More information about the Python-bugs-list
mailing list