如图,用hash() 筛重时竟然出现了重复。
如下图:
hash字符串时,同一窗口的是一致的,不同窗口结果竟然不同。
python的字符串hash算法并不是直接遍历字符串每个字符去计算hash,而是会有一个secret prefix和一个secret suffix,可以认为相当于是给字符串加盐后做hash,可以规避一些规律输入的情况。
比如set/dict的hash确实是这玩意实现的,它只保证了在同一个解释器进程里相同字符串hash一致。
真需要做可重现可跨进程保持一致性的hash,请用请用hashlib的md5摘要算法。
基本使用:
import hashlib data = ‘U.S. Army Sponsors First HIV Vaccine Trial to Show Some Effectiveness in Preventing HIV‘ hashlib.md5(data.encode(encoding=‘UTF-8‘)).hexdigest()
详见廖老师博客:https://www.liaoxuefeng.com/wiki/1016959663602400/1017686752491744
参考:
https://www.zhihu.com/question/57526436
https://www.liaoxuefeng.com/wiki/1016959663602400/1017686752491744
保持唯一性,请停止使用【python3 内置hash() 函数】
原文:https://www.cnblogs.com/liangmingshen/p/13207765.html