`
daiyuok
  • 浏览: 25419 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

python中可hash的对象

阅读更多

看核心编程时候有个叫hash的东西,呵呵,打开python文档看看:

 

hashable(可哈希性)

An object is hashable if it has a hash value which never changes during its lifetime (it needs a __hash__() method), and can be compared to other objects (it needs an __eq__() or __cmp__() method). Hashable objects which compare equal must have the same hash value.

(如果一个对象是可哈希的,那么在它的生存期内必须不可变(需要一个哈希函数),而且可以和其他对象比较(需要比较方法).比较值相同的对象一定有相同的哈希值)

 

翻译的比较生硬...简单的说就是生存期内可变的对象不可以哈希,就是说改变时候其id()是不变的.基本就是说列表,字典,集合了.

 

写一段代码验证一下:

a= [0,0,0]
b = {1:2,'c':9}
c = set(a)
string = 'hello'

class A():
    pass
a = A()
print hash(A)
print hash(a)
print hash(string)

print hash(c)
print hash(b)
print hash(a)

可以看出列表,字典,集合是无法哈希的,因为他们在改变值的同时却没有改变id,无法由地址定位值的唯一性,因而无法哈希.

分享到:
评论

相关推荐

    获取任意文件Hash值

    C#自己封装的获取任意文件Hash值DLL,添加引用,实例对象,传入文件path,返回hash值.

    rob:使用 Redis 使 Python 对象持久化

    具有 Redis 后端的持久性 Python 对象。 pip install rob 对象 对字典进行 JSON 转储并将其保存在 Redis 哈希中的对象。 需要定义HASH_KEY - 散列的键。 哈希对象 将其字典保存在 Redis 哈希中的对象。 使用 ...

    Python字典对象实现原理详解

    字典类型是Python中最常用的数据类型之一,它是一个键值对的集合,字典通过键来索引,关联到相对的值,理论上它的查询复杂度是 O(1) : >>> d = {'a': 1, 'b': 2} >>> d['c'] = 3 >>> d {'a': 1, 'b': 2, 'c': 3} ...

    Python基础面试题

    Python中主要有四种类型的数据结构。 列表:列表是从整数到字符串甚至另一个列表的异构数据项的集合。列表是可变的。列表完成了其他语言中...在字典里,键是唯一且不可变的对象。 例如:a = {'number':[1,2,3,4]}

    python内置的集合set中元素顺序-python基础教程:set(集合).pdf

    python内置的集合set中元素顺序_python基础教程:set(集 合) Python集合(set),是⼀个很有意思的数据结构。从形式上看,它像字典有key但没有value,它的写法是这样的s = {'a', 'b', 'c'},是不是像 ⼀个没有value...

    详解Python中的内建函数,可迭代对象,迭代器

    Python中的内建函数和可迭代对象,迭代器 求值标识 id() #标识id 返回对象的唯一标识,CPython返回内存地址 hash() #哈希, 返回对象的哈希值 len(s) –>返回一个集合类型的元素个数 range(start,stop[,step]) ...

    python中如何处理Json格式以及区分dict数据

    Python的dict的key可以是任意可hash对象,json只能是字符串。形式上有些相像,但json是纯文本的,无法直接操作 json的格式要求必须且只能使用双引号作为key或者值的边界符号,不能使用单引号,但dict就无所谓了。 ...

    python3实现将json对象存入Redis以及数据的导入导出

    Redis数据类型 String:二进制安全,可以包含任何数据 Hash:一个键值(key=>value)对集合 List:简单的字符串列表 Set:string类型的无序...具体用法可查看网上教程或官方文档或命令行提示 Redis持久化 Redis运行在内存中

    详解Python字符串对象的实现

    Python 中的字符串对象在内部对应一个名叫 PyStringObject 的结构体。“ob_shash” 对应字符串经计算过的 hash值, “ob_sval” 指向一段长度为 “ob_size” 的字符串,且该字符串以‘null’结尾(为了兼容C)。“ob...

    基于python局部敏感哈希算法进行论文的相似性比对

    基于python局部敏感哈希算法进行论文的相似性比对 1.LSH算法简介: 我们将这样的一族hash函数 H={h:S→U} 称为是(r1,r2,p1,p2)敏感的,如果对于任意H中的函数h,满足以下2个条件: 如果d(O1,O2),那么Pr[h(O1)=h...

    python入门到高级全栈工程师培训 第3期 附课件代码

    08 数学意义的函数与python中的函数 09 为何要有函数 10 函数返回值 11 可变长参数 第15章 01 上节课复习 02 全局变量与局部变量 03 风湿理论之函数即变量 04 函数递归 05 函数递归补充 第16章 01 上节课回顾 02...

    python-3.7.0b5下載

    dict 对象的插入顺序保存性质被纳入Python官方语言规范 标准库的重大改进: asyncio 模块增加了新功能,提高了可用性和性能 time 模块新增纳秒级函数支持,新函数将纳秒数作为整数值返回 CPython 部署改进: ...

    deepdiff:深度差异和任何Python对象数据的搜索

    DeepDiff v 5.3.0DeepDiff概述DeepDiff:字典,可迭代项,字符串和其他对象的深层差异。 它将递归地查找所有更改。 深度搜索:搜索其他对象内的对象。 DeepHash:根据对象的内容对其进行哈希处理。 在Python 3.6+和...

    2021年XX学校XX专Python程序设计任务驱动式教程练习题测试题复习题带答案单元测试-(10).docx

    该类实例中包含__hash__()方法 C.该类实例中只包含__dir__()方法,不包含__hash__()方法 D.该类没有定义任何方法,所以该实例中没有包含任何方法 3.实现以下方法可以让对象像函数一样被调用的是( C )。 A.

    python中的hashlib和base64加密模块使用实例

    看到好几位博主通过对模块的各个击破学习python,我也效法一下,本篇说一下python中加密涉及到的模块。 hashlib hashlib模块支持的加密算法有md5 sha1 sha224 sha256 sha384 sha512(加密原理请参考此处),使用起来也...

    python中OrderedDict的使用方法详解

    OrderedDict,实现了对字典对象中元素的排序。请看下面的实例: import collections print "Regular dictionary" d={} d['a']='A' d['b']='B' d['c']='C' for k,v in d.items(): print k,v print "\nOrder ...

    Python OrderedDict的使用案例解析

    这篇文章主要介绍了Python OrderedDict的...OrderedDict,实现了对字典对象中元素的排序。请看下面的实例: import collections print Regular dictionary d={} d['a']='A' d['b']='B' d['c']='C' for k,v in d.item

    version-control-system:用python实现的版本控制系统

    vcs hash-object->命令创建文件的对象ID,提交等并将其存储在数据库/内存磁盘中。 vcs cat-file->命令从存储在文件中的序列化vcs对象创建合适的vcs python对象(反序列化) vcs commit->函数形成commit并将其写入...

    Python中关于浮点数的冷知识

    若两个对象的 hash 结果相等,即 hash(a) == hash(b),那么它们是否必然相等呢? 答案当然都为否(不然就不叫冷知识了),大家可以先尝试回答一下,然后再往下看。 —–思考分割线—– 好了,先来看看第一个问题。...

    Python3 菜鸟查询手册

    23 面向对象.png 24 标准库概览.png 25 实例.png 25.01 Hello World 实例.png 25.02 数字求和.png 25.03 平方根.png 25.04 二次方程.png 25.05 计算三角形的面积.png 25.06 随机数生成.png 25.07 摄氏温度...

Global site tag (gtag.js) - Google Analytics