`
daiyuok
  • 浏览: 25376 次
  • 性别: 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(加密原理请参考此处),使用起来也...

    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 摄氏温度...

    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),那么它们是否必然相等呢? 答案当然都为否(不然就不叫冷知识了),大家可以先尝试回答一下,然后再往下看。 —–思考分割线—– 好了,先来看看第一个问题。...

Global site tag (gtag.js) - Google Analytics