python tips:作为dict的key的类
2020-12-13 01:54
标签:other elf key 链表 return tips The div span Python的dict由hash实现,解决hash冲突的方法是二次探查法。hash值相同的元素会形成链表。所以dict在查找key时,首先获取hash值,直接得到链表的表头;而后在链表中查找等于key的值。 所以要使一个对象的实例能够作为dict的key值,一般需要实现__hash__和__eq__两个方法。 1. 要作为dict的key,需要能够求hash值(key为不可变对象),需要能比较(是否相等) 2. 对于类来说,实例求hash需要实现__hash__,比较是否相等需要实现__eq__(默认比较引用,不同实例的引用总是不同) python tips:作为dict的key的类 标签:other elf key 链表 return tips The div span 原文地址:https://www.cnblogs.com/luoheng23/p/11018813.html没有实现__eq__方法的类的实例总是不相等(引用总是不同)
1 class A:
2 def __hash__(self):
3 return 2
4
5 a = A()
6 b = A()
7 d = {a:0}
8 if b in d:
9 print(d[b])
10 else:
11 print("b is not in d")
输出结果
1 b is not in d
可以用于key的实例
1 class A:
2 def __hash__(self):
3 return 2
4
5 def __eq__(self, other):
6 return True
7
8 a = A()
9 b = A()
10 d = {a:0}
11 if b in d:
12 print(d[b])
13 else:
14 print("b is not in d")
输出结果
1 0
总结: