保持唯一性,请停止使用【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 ...
随机推荐
- egg框架学习笔记
1.安装 npm i egg-init -g egg-init egg-example --type=simple cd egg-example yarn install npm run dev // ...
- STL练习-简单计算器
读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值. Input 测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间用一个空格分隔.没有非 ...
- database.properties基本配置
database.properties基本配置 jdbc.driver=com.mysql.jdbc.Driver # jdbc.url=jdbc:mysql://localhost:3306/ssm ...
- FCC 中级算法题 Everything Be True
Everything Be True 所有的东西都是真的! 完善编辑器中的every函数,如果集合(collection)中的所有对象都存在对应的属性(pre),并且属性(pre)对应的值为真.函数返 ...
- 汇编程序 - TD调试
为了写这个Blog,无奈的我深夜打开虚拟机,希望也能帮助一些人,因为好像真的有人不会欸!(→_→) 写在前面的话: 1. TD面板下的调试十分重要.可以观察内存(GOTO DS:XXXX)存放的位置与 ...
- c语言数据结构 树的基本操作
树的基本操作有创建,插入,删除,以及各种遍历的应用,如:利用后序遍历求高度,利用前序遍历求层数的结点 基本算法思路:创建二叉树函数参数必须接受二级指针!如果使用同级指针,无法返回创建后的结果,利用递归 ...
- springboot修改事务隔离级别
[SpringBoot]事务的隔离级别.Spring的事务传播机制_51CTO博客_springboot事务隔离级别
- 自行封装JDBCUtils
自己封装JDBCUtils package com.javasm.util; import com.javasm.bean.Emp; import com.javasm.constants.JDBCC ...
- Sqoop从MySQL向Hive增量式导入数据报错:Exception in thread "main" java.lang.NoClassDefFoundError: org/json/JSONObject
1.问题描述: (1)问题示例: Step1:创建作业: [Hadoop@master TestDir]$ sqoop job \> --create myjob_1 \> -- impo ...
- 【帆吖】Java学习零基础17
Java方法 1 package method; 2 3 public class Demo1 { 4 //main方法 5 public static void main(String[] args ...