字典
1. 字典的定义(掌握)
字典是一种无序的键值对集合,用于存储和查找数据。字典通过键(key)来访问值(value),键必须是唯一的且不可变的(通常为字符串或数字),而值可以是任意数据类型。字典使用大括号 {}
表示,键值对之间用逗号分隔,键和值之间用冒号分隔。
-
定义字典:
empty_dict = {} # 空字典 person = {"name": "yanchen", "age": 18, "city": "Changsha"} # 包含多个键值对的字典
2. 字典的基本操作(掌握)
字典支持多种基本操作,如添加、修改、删除和访问键值对。
2.1 访问字典的值
-
使用键来访问字典中的值。如果键不存在会引发
KeyError
,可以使用get()
方法避免异常。person = {"name": "yanchen", "age": 18} print(person["name"]) # 输出 'yanchen' print(person.get("age")) # 输出 18 print(person.get("gender", "N/A")) # 输出 'N/A',若键不存在返回默认值
2.2 添加和修改键值对
-
如果键已存在,则修改该键的值;如果键不存在,则添加新的键值对。
person = {"name": "yanchen", "age": 18} person["city"] = "Changsha" # 添加新的键值对 person["age"] = 18 # 修改已有键的值 print(person) # 输出 {'name': 'yanchen', 'age': 18, 'city': 'Changsha'}
2.3 删除键值对
-
使用
del
语句或pop()
方法删除指定的键值对。popitem()
方法可以随机删除字典中的最后一对键值。person = {"name": "yanchen", "age": 18, "city": "Changsha"} del person["city"] # 删除指定键 age = person.pop("age") # 使用 pop() 获取并删除指定键 print(person) # 输出 {'name': 'yanchen'} print(age) # 输出 18
2.4 检查键是否存在
-
使用
in
关键字检查键是否存在于字典中。person = {"name": "yanchen", "age": 18} print("name" in person) # 输出 True print("city" in person) # 输出 False
3。 字典的常用方法(掌握)
Python 提供了多种方法来操作字典,这些方法可以帮助我们进行遍历、更新和获取键值对等操作。
3.1 keys()
:获取所有键
-
使用
keys()
方法返回字典中所有键的视图。person = {"name": "yanchen", "age": 18} print(person.keys()) # 输出 dict_keys(['name', 'age'])
3.2 values()
:获取所有值
-
使用
values()
方法返回字典中所有值的视图。person = {"name": "yanchen", "age": 18} print(person.values()) # 输出 dict_values(['yanchen', 18])
3.3 items()
:获取所有键值对
-
使用
items()
方法返回字典中所有键值对的视图,每个键值对以元组形式表示。person = {"name": "yanchen", "age": 18} print(person.items()) # 输出 dict_items([('name', 'yanchen'), ('age', 18)])
3.4 update()
:更新字典
-
使用
update()
方法将另一个字典或键值对序列合并到当前字典中,若有重复键则更新值。person = {"name": "yanchen", "age": 18} additional_info = {"city": "Changsha", "age": 18} person.update(additional_info) print(person) # 输出 {'name': 'yanchen', 'age': 18, 'city': 'Changsha'}
3.5 pop()
和 popitem()
:删除键值对
-
pop(key)
:删除并返回指定键的值。 -
popitem()
:随机删除并返回字典中的最后一个键值对(Python 3.7 以后为删除最后一对)。person = {"name": "yanchen", "age": 18, "city": "Changsha"} age = person.pop("age") # 删除并返回 'age' 的值 last_item = person.popitem() # 随机删除并返回最后一个键值对 print(age) # 输出 18 print(last_item) # 输出 ('city', 'Changsha')
3.6 clear()
:清空字典
-
使用
clear()
方法删除字典中的所有键值对,将字典清空。person = {"name": "yanchen", "age": 18} person.clear() print(person) # 输出 {}
4. 字典的遍历(掌握)
字典遍历是字典操作中非常常见的一部分,通常用于处理每一个键值对。
-
遍历键:
person = {"name": "yanchen", "age": 18} for key in person.keys(): print(key)
-
遍历值:
for value in person.values(): print(value)
-
遍历键值对:
for key, value in person.items(): print(f"{key}: {value}")
5. 字典的嵌套(掌握)
字典可以包含其他字典,形成嵌套结构,用于表示更复杂的数据关系。
-
示例:
student = { "name": "yanchen", "age": 18, "courses": { "math": 90, "science": 85 } } print(student["courses"]["math"]) # 输出 90
6. 字典生成式(掌握)
字典生成式(Dictionary Comprehension)是一种简洁的生成字典的方式,可以用一行代码创建一个新的字典,常用于数据处理和过滤。
-
基本语法:
{key_expr: value_expr for item in iterable if condition}
-
示例:
squares = {x: x**2 for x in range(1, 6)} print(squares) # 输出 {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
7. 字典的拷贝(了解)
字典的拷贝分为浅拷贝和深拷贝。
7.1 浅拷贝
-
浅拷贝只复制字典的第一层元素,嵌套的字典仍然是引用。
original = {"name": "yanchen", "courses": {"math": 90}} shallow_copy = original.copy() shallow_copy["courses"]["math"] = 100 print(original) # 输出 {'name': 'yanchen', 'courses': {'math': 100}}
7.2 深拷贝
-
深拷贝递归地复制所有层级的元素,使用
copy
模块中的deepcopy()
实现。import copy original = {"name": "yanchen", "courses": {"math": 90}} deep_copy = copy.deepcopy(original) deep_copy["courses"]["math"] = 100 print(original) # 输出 {'name': 'yanchen', 'courses': {'math': 90}}
8. 字典的使用场景(了解)
字典适合用于存储和查找数据的场景,尤其是在以下情况中:
-
数据映射:存储键值对关系,如用户信息、配置数据等。
-
计数:可以用字典来统计元素出现的频率。
-
多层数据结构:当需要存储多层数据时,字典嵌套是常用方式。
-
示例:计数应用:
words = ["apple", "banana", "apple", "cherry"] word_count = {} for word in words: word_count[word] = word_count.get(word, 0) + 1 print(word_count) # 输出 {'apple': 2, 'banana': 1, 'cherry': 1}
No Comments