Python 字典(dictionary)是一种内置的数据结构,通过键值对(key-value pair)来存储数据。字典本质上是一种映射类型,将*的键与值关联起来。与列表、元组不同,字典是无序的,也就是说,它并不保留元素添加的顺序,直到Python 3.7开始,Python才保证了字典插入的顺序。字典使用大括号 {}
来表示,其中包含一系列的键值对,键和值之间用冒号 :
分隔,多个键值对之间用逗号 ,
分隔。
要创建字典,可以使用大括号 {}
或 dict()
函数。例如:
# 使用大括号创建
my_dict = {'name': 'Alice', 'age': 25, 'location': 'Wonderland'}
print(my_dict)
# 使用dict()创建
another_dict = dict(name='Bob', age=30, location='Nowhere')
print(another_dict)
字典中的键必须是不可变的,因此可以使用字符串、数字或元组作为键,但不能使用列表或字典等可变数据类型。此外,每个键在字典中是*的,不能有重复的键。
# 有效的键
valid_dict = {
'string_key': 1,
42: 'integer key',
(1, 2): 'tuple key'
}
# 无效的键示例(会报错)
# invalid_dict = {
# ['list_key']: 'value' # 会引发TypeError
# }
字典的值可以是任何数据类型,包括列表、字符串、数字、甚至是另一个字典。值没有*性要求:
value_dict = {
'name': 'Alice',
'favorites': ['Tea', 'Books'],
'address': {'city': 'Wonderland', 'zipcode': 12345}
}
通过键来访问字典的值,如果键不存在,会引发 KeyError
错误。为了避免这种情况,可以使用 get()
方法,它允许设置一个默认返回值,当键不存在时返回这个默认值,而不报错。
# 访问字典值
name = my_dict['name']
print(f"Name: {name}")
# 使用get()方法
age = my_dict.get('age')
print(f"Age: {age}")
# 不存在的键,使用get()提供默认值
nickname = my_dict.get('nickname', 'No nickname found')
print(f"Nickname: {nickname}")
在字典中,可以通过键直接修改对应的值,或添加新的键值对。
# 修改字典的值
my_dict['age'] = 26
print(my_dict)
# 添加新的键值对
my_dict['nickname'] = 'Alicia'
print(my_dict)
使用 del
语句或 pop()
方法可以删除字典中的键值对。del
语句直接删除,而 pop()
方法则会返回被删除的值。
# 使用del删除
del my_dict['nickname']
print(my_dict)
# 使用pop()
age = my_dict.pop('age')
print(f"Popped age: {age}")
print(my_dict)
字典支持多种操作,还提供了丰富的方法来操作字典。
keys()
:返回字典的所有键。values()
:返回字典的所有值。items()
:返回字典的键值对(键和值形成元组)。print("Keys:", my_dict.keys())
print("Values:", my_dict.values())
print("Items:", my_dict.items())
字典可以通过迭代器对它的键、值或键值对进行循环。
# 迭代字典的键
for key in my_dict:
print(key, ":", my_dict[key])
# 迭代键值对
for key, value in my_dict.items():
print(key, ":", value)
由于 Python 字典是基于哈希表实现的,因此它们拥有非常快的查找速度,可以在平均 O(1) 的时间复杂度内完成查找。这种高效的查找性能是字典在 Python 中被广泛使用的原因之一。
从 Python 3.5 开始,可以使用 update()
方法合并两个字典。Python 3.9 引入了新的合并和更新运算符 |
和 |=
:
# 使用update()
dict1 = {'a': 1, 'b': 2}
dict2 = {'b': 3, 'c': 4}
dict1.update(dict2)
print('Updated dict1:', dict1)
# 使用|运算符
dict3 = {'x': 10, 'y': 20}
dict4 = {'y': 30, 'z': 40}
merged_dict = dict3 | dict4
print('Merged dict using |:', merged_dict)
Python 字典是非常强大和灵活的数据结构,适合于需要快速访问、插入和删除操作的数据情境。了解如何有效地使用字典,可以显著提升程序的性能和可读性。在处理复杂数据时,字典经常与其他数据结构(如列表和集合)组合使用,从而实现更灵活的解决方案。