我想为Python中的大型整数对获得一个时间和平台无关的哈希函数,它也很快并且(几乎可以肯定)没有冲突。 (嗯,你还想要什么哈希 - 但无论如何.......)
到目前为止,我对排序列表的字符串表示使用了hashlib.md5
:
> my_set = set([(1,2),(0,3),(1,3)]) # the input set, size 1...10^6
> import hashlib
> def MyHash(my_set):
> my_lst = sorted(my_set)
> my_str = str(my_lst)
> return hashlib.md5(my_str).hexdigest()
my_set
包含1到10 ^ 5对,每个int
介于0到10 ^ 6之间。总的来说,我有大约10 ^ 8个这样的集合,哈希几乎肯定是唯一的。
这听起来合理,还是有更好的方法呢?
在我在列表中设置10 ^ 6对的示例中,这需要大约2.5sec
,因此如果可能的话,时间的改进可能会很好。几乎所有的时间都花在计算排序列表的字符串上,所以问题的很大一部分是
python中整数元组的排序列表的字符串是否在版本和平台之间保持稳定?是否有更好/更快的方法来获得稳定的字符串表示?