Python中的哈希

基础1、什么是可哈希(hashable)?哪些类型是可哈希的?参考 python可变与可哈希2、Python的哈希值和哈希集Python内置了hash()方法,能够返回可哈希对象的哈希值(一个整数)。对于这个整数我们需要了解,这个整数在一个Python进程中是唯一而且保持不变的,但它们的值在重复运行的 Python 间是不可预测的。那么我们可以根据这个哈希值搭建很多以此为依据的数据类型-称...
摘要由CSDN通过智能技术生成

基础

1、什么是可哈希(hashable)?哪些类型是可哈希的?

参考 python可变与可哈希

2、Python的哈希值和哈希集

Python内置了hash()方法,能够返回可哈希对象的哈希值(一个整数)。对于这个整数我们需要了解,这个整数在一个Python进程中是唯一而且保持不变的,但它们的值在重复运行的 Python 间是不可预测的。那么我们可以根据这个哈希值搭建很多以此为依据的数据类型-称为哈希集。Pyhotn中的哈希集有set、frozenset、dict
对于哈希集中的对象一定都是可哈希的,比如字典的KEY不能够是列表,因为列表不可哈希,同时集合的元素不能够包含列表,字典,以及集合。

默认自定义类

用户自定义的类默认带有__eq__()和__hash__()方法。默认使它们与任何(自己除外)对象必定不同,意思是x.hash()会返回一个恰当的值确保 x==y 同时 x is y 同时 hash(x) == hash(y)

重载__hash__(self)

Python内置的hash()方法调用的就是__hash__()魔法方法,根据官方建议:it is advised to mix together the hash values of the components of the object that also play a part in comparison of objects by packing them into a tuple and hashing the tuple.最大化使用对象中有哈希值的成员构成的元组,并返回元组的哈希值。这里有一个官方的实例:

def __hash__(self):
	return hash((self.name, self.nick, self.color))

只重载__eq__()

如果一个用户自定义类只重载了__eq__()而没有重载__hash__()则会将其__hash__()隐式的设置为None。当一个类的__hash__()为

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值