目录
在 Python 中,字典是一种内置的数据类型,它是一个无序的、可变的、键值对集合。每个字典中的元素都是由“键”与“值”组成,键是唯一的,而值可以是任意类型的数据。字典非常适用于存储和查找关联数据。
一. 字典的基本操作
1. 创建字典
字典可以通过花括号 {}
或者使用
dict()
函数来创建。
# 使用花括号创建字典
my_dict = {'name': 'Alice', 'age': 25, 'city': 'New York'}
# 使用 dict() 函数创建字典
my_dict2 = dict(name='Bob', age=30, city='Los Angeles')
2. 访问字典中的值
通过键来访问字典中的值。如果键不存在,会抛出
KeyError
异常。
print(my_dict['name']) # 输出 'Alice'
print(my_dict['age']) # 输出 25
安全访问:使用 get()
方法可以避免
KeyError
,如果键不存在,返回
None
或自定义的默认值。
print(my_dict.get('name')) # 输出 'Alice'
print(my_dict.get('address')) # 输出 None
print(my_dict.get('address', 'Unknown')) # 输出 'Unknown'
3. 修改字典中的值
可以通过键来更新字典中的值。
my_dict['age'] = 26 # 更新值
print(my_dict) # 输出 {'name': 'Alice', 'age': 26, 'city': 'New York'}
4. 添加新的键值对
如果字典中没有某个键,直接给它赋值即可添加新的键值对。
my_dict['address'] = '123 Street'
print(my_dict) # 输出 {'name': 'Alice', 'age': 26, 'city': 'New York', 'address': '123 Street'}
5. 删除字典中的元素
- 使用
del
删除指定键值对。 - 使用
pop()
删除指定键值对并返回其值。 - 使用
popitem()
删除并返回最后一对键值对。 - 使用
clear()
清空字典。
del my_dict['city'] # 删除键 'city' 和它的值
print(my_dict) # 输出 {'name': 'Alice', 'age': 26, 'address': '123 Street'}
value = my_dict.pop('address') # 删除并返回 'address' 键对应的值
print(value) # 输出 '123 Street'
print(my_dict) # 输出 {'name': 'Alice', 'age': 26}
my_dict.clear() # 清空字典
print(my_dict) # 输出 {}
6. 字典的遍历
可以通过不同的方式遍历字典:
- 遍历字典的键(
keys()
) - 遍历字典的值(
values()
) - 遍历字典的键值对(
items()
)
my_dict = {'name': 'Alice', 'age': 25, 'city': 'New York'}
# 遍历键
for key in my_dict.keys():
print(key)
# 遍历值
for value in my_dict.values():
print(value)
# 遍历键值对
for key, value in my_dict.items():
print(f"{key}: {value}")
7. 检查键是否存在
使用 in 关键字检查某个键是否存在于字典中。
if "name" in person:
print("Name exists")
8. 获取字典长度
使用 len() 函数获取字典中键值对的数量。
print(len(person)) # 输出字典中键值对的数量
9. 复制字典
使用 copy() 方法创建字典的一个浅复制。
new_person = person.copy()
10. 合并字典
在 Python 3.9 及以上版本中,可以使用 | 和 |= 操作符来合并字典。
dict1 = {"a": 1, "b": 2}
dict2 = {"b": 3, "c": 4}
merged_dict = dict1 | dict2 # {'a': 1, 'b': 3, 'c': 4}
# 或者使用 |= 来就地更新 dict1
dict1 |= dict2
二. 字典的常用方法
update()
:将一个字典中的键值对添加到另一个字典中。如果键已存在,则更新其值。pop()
:移除指定键并返回其值。popitem()
:移除并返回最后一个键值对。clear()
:移除字典中的所有元素。copy()
:返回字典的浅拷贝。setdefault()
:如果键不存在,则添加指定的键值对;如果键已存在,则返回该键的值。
# 使用 update()
my_dict.update({'gender': 'female'})
print(my_dict) # 输出 {'name': 'Alice', 'age': 25, 'city': 'New York', 'gender': 'female'}
# 使用 copy()
new_dict = my_dict.copy()
print(new_dict) # 输出 {'name': 'Alice', 'age': 25, 'city': 'New York', 'gender': 'female'}
# 使用 setdefault()
value = my_dict.setdefault('country', 'USA')
print(value) # 输出 'USA' (添加了 'country' 键)
三. 字典的特点
- 键是唯一的:字典中的每个键必须是唯一的。重复的键会覆盖掉之前的值。
- 无序:字典本身是无序的,在 Python 3.7 之前,字典中的键值对没有固定的顺序;从 Python 3.7 开始,字典保持插入顺序。
- 可变:字典是可变数据类型,可以在创建后修改、删除或者添加键值对。
四. 字典的应用场景
字典通常用于存储关联数据,比如:
- 存储用户信息(如:用户名、年龄、邮箱等)。
- 实现映射关系(如:学生ID与姓名之间的映射)。
- 用于频率统计(如:单词出现频率统计)。
# 统计单词出现频率
text = "hello world hello python"
word_count = {}
for word in text.split():
word_count[word] = word_count.get(word, 0) + 1
print(word_count) # 输出 {'hello': 2, 'world': 1, 'python': 1}
总结,字典是 Python 中非常强大且常用的数据类型,它提供了高效的键值对存储和快速的查找、修改功能。