无论是Python中的字典还是Java中的哈希图,键都可以是节点类的实例。
但是当我阅读 python 教程时,它说:
键在字典中是唯一的,而值可能不是。字典的值可以是任何类型,但键必须是不可变的数据类型,例如字符串、数字或元组。
感到困惑!# 抱歉我的表达不好!:(
示例代码是:
class RandomListNode:
def __init__(self, x):
self.label = x
self.next = None
self.random = None
dict = {}
node1 = RandomListNode(10)
node2 = RandomListNode(5)
dict[node1] = node2
print dict[node1].label #5
Run Code Online (Sandbox Code Playgroud)
总结:Hashable(哈希值不会改变)或immutable对象可以是key value。参考: https: //docs.python.org/2/glossary.html#term-hashable
默认情况下,类的实例是唯一的,因此可以用作键。
__hash__实际的约束是类中存在方法。如果您添加自定义__eq__方法,您还必须添加自己的__hash__方法,以便仍然被视为“不可变”——但请确保您的哈希值不会随着突变而改变,否则您的条目将无法从sets 和dicts 检索。