python - hashmap碰撞 - 快速哈希2顺序无关紧要的坐标?



python map dict (1)

是否有一个公式是一个单向散列2个坐标(a,b)和(c,d)为一个整数,其中a,b,c和d是正的? 顺序在这里不重要,所以当给定(a, b), (c, d)(c, d), (a, b)时,公式应该给出相同的结果。 每个坐标点物质( (a, b)中的实际数量的顺序与(b, a) )。 速度是关键,公式应该是快速的,具有O(1)的复杂性。

请注意 - 我现在正在做的是使用Python构建排序两个坐标,然后将它们用作Python内置字典中的键(所以内置散列)。 我需要一个更快的方法来做到这一点,以便我可以自己散列两个坐标到一个整数。

https://ffff65535.com


你可以使用一个冷冻集hash()做到这一点。

>>> hash(frozenset([(10, 20), (11, 22)]))
1735850283064117985
>>> hash(frozenset([(11, 22), (10, 20)]))
1735850283064117985

Frozensets是专门为这种用例设计的(即frozensets是本质上无序的集合,是不可变的,可散列的)。

希望这个答案把你的权利,你需要什么:-)





hashcode