在Python中,字典的键(key)必须是可哈希的,这意味着键对象必须满足以下条件:
不可变性:
键对象不能是可变的,因为可变对象的内容可以在创建后改变,这会导致其哈希值改变,从而破坏字典的结构。
可散列性:
键对象必须有一个`__hash__`方法,该方法返回一个整数,表示对象的哈希值。
一致性:
如果两个对象相等(使用`==`运算符比较),那么它们的哈希值必须相同。
根据这些条件,以下类型的对象可以作为Python字典的键:
不可变类型:如整数、浮点数、字符串、组(组内的素也必须是不可变的)。
自定义不可变类型:只要自定义类型是不可变的,并且实现了`__hash__`方法,也可以作为字典的键。
使用不可变类型作为键d1 = {1: "one", "two": 2, (3, 4): "three_four"}自定义不可变类型作为键class ImmutableKey:def __init__(self, value):self.value = valuedef __hash__(self):return hash(self.value)def __eq__(self, other):if isinstance(other, ImmutableKey):return self.value == other.valuereturn Falsed2 = {ImmutableKey(1): "one", ImmutableKey("two"): 2}
可变类型:如列表、字典、集合,因为它们的内容可以在创建后改变。
没有`__hash__`方法的对象:如果一个对象没有实现`__hash__`方法,它就不能作为字典的键。
需要注意的是,列表和字典作为键时,它们自身是不可变的,但列表是可变的,所以列表不能作为字典的键。而组是不可变的,所以可以作为字典的键。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://sigusoft.com/bj/34237.html