保持唯一性,请停止使用【python3 内置hash() 函数】
问题:
如图,用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() 函数】的更多相关文章
- python3 内置常用函数系列一
		
python3 内置了一系列的常用函数, python英文官方文档详细说明:点击查看, 为了方便查看,将内置常用的函数的记录一下来. Python3版本所有的内置函数: 1.abs() print(a ...
 - python3内置函数大全
		
由于面试的时候有时候会问到python的几个基本内置函数,由于记不太清,就比较难受,于是呕心沥血总结了一下python3的基本内置函数 Github源码: https://github. ...
 - python3内置函数大全(顺序排列)
		
python3内置函数大全 内置函数 (1)abs(), 绝对值或复数的模 1 print(abs(-6))#>>>>6 (2)all() 接受一个迭代器,如果迭代器的所有 ...
 - Python3内置函数、各数据类型(int/str/list/dict/set/tuple)的内置方法快速一览表
		
Python3内置函数 https://www.runoob.com/python3/python3-built-in-functions.html int https://www.runoob.co ...
 - 浏览器内置Console函数使用详解
		
浏览器内置Console函数比较好用:Chrome 和 FireFox(Firebug插件) 利用此功能可以像直接在面板里面运行JS一样(写法不同而已) 一.显示信息的命令 Firebug内置一个co ...
 - javascript笔记整理(回调、递归、内置顶层函数)
		
1.回调函数(通过函数的指针来调用函数,把一个函数的指针做为另一个函数的参数,当调用这个参数的时候,这个函数就叫做回调函数) a.通过指针来调用 function aa(a,b,fun){ retur ...
 - 【学习】js学习笔记:内置顶层函数eval()的兼容用法
		
今天学了一个内置顶层函数,eval();其作用是将字符串转换成javascript命令执行,但必须符合语法,否则会报错. 如果写成window.eval(),则其定义的变量会在全局生效. 但是,在IE ...
 - 学习angularjs的内置API函数
		
angularjs的内置API函数有很多,如isString()判断给定的对象是否为字符串,如果是返回 true,反之返回false:isNumber()判断给定的对象是否为数字,如果是返回 true ...
 - PHP内置安全函数一览
		
内置安全函数 filter_var函数 根据参数中的过滤类型进行过滤,如过滤Email类型的,则符合的字符串返回字符串,不符合的返回False. urldecode函数 写这个函数是特别为了提醒注意, ...
 - Python descriptor 以及 内置property()函数
		
Python Descriptor 1, Python Descriptor是这样一个对象 它按照descriptor协议, 有这样的属性之一 def __get__(self, obj, type ...
 
随机推荐
- Kafka相关问题
			
Kafka有哪几个部分组成 生产者.消费者.topic.group.partition kafka的group1)定义:即消费者组是 Kafka 提供的可扩展且具有容错性的消费者机制.在Kafka中, ...
 - Appium+Python UI自动化框架
			
import datetimefrom appium.webdriver.common.touch_action import TouchActionfrom appium import webdri ...
 - 【jinja2】Python根据模板生成HTML文件并加载进QWebEngineView
			
前言 继前文Python在PyQt5中使用ECharts绘制图表中在Python程序中添加网页展示ECharts图表,和Python使用QWebEngineView时报错Uncaught Refere ...
 - 329MD5的加密
			
一.引用帮助类 二.登录的代码
 - Windows 解决teamview远程必须mstsc连接
			
真实原因是你的TeamViewer一直在用远程桌面的ID进行登录,所以一旦远程桌面断开,TeamViewer就无法连接了.因此我们只需要切换为服务器的TeamViewer ID即可,服务器的TeamV ...
 - C/S 架构  和 B/S 架构
			
C/S架构的理解: 官方称:clinet-server 客户端需要下载的软件: 今日头条,爱奇艺等 能在手机和浏览器打开的软件 B/S架构的理解: 官方称:web-server 客户端为浏览器的: ...
 - 使用hugo在gitee上写blog
			
1. 安装hugo 1)下载 Hugo Releases,选择hugo_xxx_Windows-64bit.zip(xxx位版本). 2)设置路径 我的电脑->属性->高级系统设置-> ...
 - VisualVM无法运行,修改配置文件
			
在VisualVM安装位置下找到etc目录修改etc目录下的visualvm.conf文件 加入配置 参数 指定JDK或JRE路径,如 visualvm_jdkhome="C:\xxx\ ...
 - windows安装WinDump
			
1.下载软件,放在C盘: WinDump.exehttps://www.winpcap.org/windump/install/default.htmWinPcap_4_1_3.exe(windows ...
 - 初始化时使window 全屏 且显示任务栏 wpf
			
void IniWindowFullScreemAndDisplayTaskbar() { this.Width = SystemParameters.FullPrimaryScreenWidth; ...