字典(Dictionary)是Python中非常重要和实用的数据结构,用于存储键值对(key-value pairs)。字典在很多编程场景中非常有用,因为它们提供了一种高效的方式来管理和访问数据。本文将详细讲解如何创建字典、访问字典中元素、修改字典元素、删除字典元素、查找元素是否是字典的键、标准类型操作符以及常用内置函数。
1. 创建字典
字典是由一系列键值对组成的无序集合。键是唯一的,且必须是不可变的类型(如字符串、数字或元组),值可以是任何类型。字典使用花括号 {}
创建,键和值之间用冒号 :
分隔,键值对之间用逗号 ,
分隔。
示例:
代码语言:javascript复制# 创建一个空字典
empty_dict = {}
# 创建一个包含键值对的字典
person = {"name": "Alice", "age": 25, "city": "New York"}
# 使用 dict() 函数创建字典
person = dict(name="Alice", age=25, city="New York")
# 创建嵌套字典
nested_dict = {"name": "Alice", "details": {"age": 25, "city": "New York"}}
print(empty_dict) # 输出:{}
print(person) # 输出:{'name': 'Alice', 'age': 25, 'city': 'New York'}
print(nested_dict) # 输出:{'name': 'Alice', 'details': {'age': 25, 'city': 'New York'}}
2. 访问字典中的元素
字典中的元素可以通过键来访问。如果键不存在,会引发 KeyError
异常。可以使用 get()
方法在键不存在时返回默认值,而不是引发异常。
示例:
代码语言:javascript复制person = {"name": "Alice", "age": 25, "city": "New York"}
# 使用键访问值
print(person["name"]) # 输出:Alice
print(person["age"]) # 输出:25
# 使用 get() 方法访问值
print(person.get("city")) # 输出:New York
print(person.get("country")) # 输出:None
print(person.get("country", "USA")) # 输出:USA
3. 修改字典元素
字典中的值可以通过键进行修改。如果键不存在,会添加一个新的键值对。
示例:
代码语言:javascript复制person = {"name": "Alice", "age": 25, "city": "New York"}
# 修改现有键的值
person["age"] = 26
print(person) # 输出:{'name': 'Alice', 'age': 26, 'city': 'New York'}
# 添加新的键值对
person["country"] = "USA"
print(person) # 输出:{'name': 'Alice', 'age': 26, 'city': 'New York', 'country': 'USA'}
4. 删除字典元素
可以使用 del
语句或 pop()
方法删除字典中的元素。pop()
方法还会返回被删除的值。popitem()
方法删除并返回字典中的最后一个键值对(在Python 3.7 中,字典是有序的)。
示例:
代码语言:javascript复制person = {"name": "Alice", "age": 25, "city": "New York", "country": "USA"}
# 使用 del 语句删除元素
del person["country"]
print(person) # 输出:{'name': 'Alice', 'age': 25, 'city': 'New York'}
# 使用 pop() 方法删除元素
age = person.pop("age")
print(age) # 输出:25
print(person) # 输出:{'name': 'Alice', 'city': 'New York'}
# 使用 popitem() 方法删除并返回最后一个键值对
last_item = person.popitem()
print(last_item) # 输出:('city', 'New York')
print(person) # 输出:{'name': 'Alice'}
使用 del
语句删除字典元素
del
语句用于从字典中删除指定的键及其对应的值。使用此方法时,如果尝试删除的键不存在,会引发 KeyError
异常。
person = {
"name": "Alice",
"age": 25,
"city": "New York",
"country": "USA"
}
# 使用 del 语句删除键 "country"
del person["country"]
print(person) # 输出:{'name': 'Alice', 'age': 25, 'city': 'New York'}
使用 pop()
方法删除字典元素
pop()
方法用于删除指定的键,并返回该键对应的值。如果指定的键不存在,同样会引发 KeyError
异常。可以提供一个默认值参数,当键不存在时返回该默认值而不引发异常。
person = {
"name": "Alice",
"age": 25,
"city": "New York"
}
# 使用 pop() 方法删除键 "age" 并返回其值
age = person.pop("age")
print(age) # 输出:25
print(person) # 输出:{'name': 'Alice', 'city': 'New York'}
# 使用 pop() 方法删除键 "country" 并提供默认值
country = person.pop("country", "Not Found")
print(country) # 输出:Not Found
print(person) # 输出:{'name': 'Alice', 'city': 'New York'}
使用 popitem()
方法删除并返回最后一个键值对
popitem()
方法删除并返回字典中的最后一个键值对。在 Python 3.7 及之后的版本中,字典是有序的,因此 popitem()
会删除字典中的最后一个元素。如果字典为空,调用 popitem()
会引发 KeyError
异常。
person = {
"name": "Alice",
"city": "New York"
}
# 使用 popitem() 方法删除并返回最后一个键值对
last_item = person.popitem()
print(last_item) # 输出:('city', 'New York')
print(person) # 输出:{'name': 'Alice'}
5. 查找元素是否是字典的键
可以使用 in
操作符检查一个键是否存在于字典中。
示例:
代码语言:javascript复制person = {"name": "Alice", "age": 25, "city": "New York"}
# 检查键是否存在
print("name" in person) # 输出:True
print("country" in person) # 输出:False
# 检查键是否不存在
print("name" not in person) # 输出:False
print("country" not in person) # 输出:True
检查键是否存在
使用 in
操作符可以直接检查键是否在字典中。
# 检查键 "name" 是否存在于字典 person 中
print("name" in person) # 输出:True
# 检查键 "country" 是否存在于字典 person 中
print("country" in person) # 输出:False
"name" in person
返回True
,因为字典person
中确实存在键"name"
。"country" in person
返回False
,因为字典person
中不存在键"country"
。
检查键是否不存在
同样地,我们可以使用 not in
操作符来检查键是否不在字典中。
# 检查键 "name" 是否不存在于字典 person 中
print("name" not in person) # 输出:False
# 检查键 "country" 是否不存在于字典 person 中
print("country" not in person) # 输出:True
"name" not in person
返回False
,因为字典person
中存在键"name"
。"country" not in person
返回True
,因为字典person
中确实不存在键"country"
。
6. 标准类型操作符
字典支持一些常用的标准类型操作符,例如键值对的长度、合并两个字典等。
获取字典长度
使用 len()
函数可以获取字典中键值对的数量。
示例:
代码语言:javascript复制person = {"name": "Alice", "age": 25, "city": "New York"}
print(len(person)) # 输出:3
合并两个字典
在Python 3.9 中,可以使用 |
操作符合并两个字典。
示例:
代码语言:javascript复制dict1 = {"name": "Alice"}
dict2 = {"age": 25, "city": "New York"}
merged_dict = dict1 | dict2
print(merged_dict) # 输出:{'name': 'Alice', 'age': 25, 'city': 'New York'}
在早期版本中,可以使用 update()
方法合并字典。
示例:
代码语言:javascript复制dict1 = {"name": "Alice"}
dict2 = {"age": 25, "city": "New York"}
dict1.update(dict2)
print(dict1) # 输出:{'name': 'Alice', 'age': 25, 'city': 'New York'}
7. 常用内置函数
Python提供了一些内置函数,用于操作和处理字典。
keys()
方法
keys()
方法返回字典中所有的键。
示例:
代码语言:javascript复制person = {"name": "Alice", "age": 25, "city": "New York"}
print(person.keys()) # 输出:dict_keys(['name', 'age', 'city'])
values()
方法
values()
方法返回字典中所有的值。
示例:
代码语言:javascript复制person = {"name": "Alice", "age": 25, "city": "New York"}
print(person.values()) # 输出:dict_values(['Alice', 25, 'New York'])
items()
方法
items()
方法返回字典中所有的键值对。
示例:
代码语言:javascript复制person = {"name": "Alice", "age": 25, "city": "New York"}
print(person.items()) # 输出:dict_items([('name', 'Alice'), ('age', 25), ('city', 'New York')])
字典的遍历
可以使用 for
循环遍历字典的键、值或键值对。
示例:
代码语言:javascript复制person = {"name": "Alice", "age": 25, "city": "New York"}
# 遍历键
for key in person.keys():
print(key)
# 遍历值
for value in person.values():
print(value)
# 遍历键值对
for key, value in person.items():
print(f"{key}: {value}")