在 Python 中,字典是一种非常常用的数据结构,它可以存储键值对,并提供快速的查找和访问。在本文中,我们将介绍 Python 字典中常见的键类型。
整数键
整数键是字典中最常见的类型之一。它们可以使用整数来定义,并且通常表示一些序列中的索引或计数器。例如,以下代码创建了一个包含整数键的字典:
my_dict = {1: 'apple', 2: 'banana', 3: 'orange'}
要访问字典中的值,请使用相应的键:
print(my_dict[1]) # 输出 'apple'
字符串键
另一个常见的字典键类型是字符串键。它们可以是任何字符串,通常用于表示名称、标签或属性等。例如,以下代码创建了一个包含字符串键的字典:
my_dict = {'name': 'Alice', 'age': 25, 'country': 'USA'}
要访问字典中的值,请使用相应的键:
print(my_dict['name']) # 输出 'Alice'
注意,字符串键必须放在引号中,并且区分大小写。如果键不存在,则会引发 KeyError 错误。
元组键
元组可以作为字典中的键,只要它们是不可变的。例如,以下代码创建了一个包含元组键的字典:
my_dict = {('apple', 'red'): 1, ('banana', 'yellow'): 2, ('orange', 'orange'): 3}
要访问字典中的值,请使用相应的键:
print(my_dict[('apple', 'red')]) # 输出 1
注意,由于元组是不可变的,可以用作字典中的键。如果尝试将列表或其他可变对象用作键,则会引发 TypeError 错误。
自定义类键
除了上述类型之外,还可以使用自定义类作为字典键。但是,为了避免出现错误,必须实现 __hash__() 和 __eq__() 方法。这些方法用于计算哈希值和比较两个对象的相等性。
例如,以下代码创建了一个名为 Person 的类,并将其用作字典的键:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __hash__(self):
return hash((self.name, self.age))
def __eq__(self, other):
return (self.name, self.age) == (other.name, other.age)
my_dict = {Person('Alice', 25): 'USA', Person('Bob', 30): 'Canada'}
在上面的示例中,我们定义了 Person 类,并在其中实现了 __hash__() 和 __eq__() 方法。我们使用该类的实例作为字典的键。
无论您选择哪种类型,都应该注意避免使用可变对象作为字典键。如果出现这种情况,则可能会导致意外行为或错误。