第五章:Python 数据结构:列表、元组与字典(二)
Python 列表、元组与字典详解:从基础到实战
系列文章目录
第一章 Python语言基础与应用领域
第二章 Python 开发环境搭建与工具配置(一)
第二章 Python开发环境搭建与工具配置(二)
第三章:Python基本语法规则详解(一)
第三章:Python基本语法规则详解(二)
文章目录
- Python 列表、元组与字典详解:从基础到实战
- 系列文章目录
- 三、字典(Dictionary):键值对存储结构
- 3.1 字典的定义与特点
- 3.2 字典的常用操作
- 3.3 字典的键与值规则
- 3.4 常见错误及解决
- 四、实战练习
- 练习 1:列表操作
- 练习 2:学生信息管理
- 五、总结
三、字典(Dictionary):键值对存储结构
3.1 字典的定义与特点
字典是可变、无序的键值对(key-value)集合,通过键快速访问值,用花括号 {}
定义:
empty_dict = {} # 空字典
person = {"name": "Alice","age": 30,"city": "New York"
}
mixed_dict = {1: "one", "two": 2, 3.14: "pi"} # 不同类型的键
nested_dict = { # 嵌套字典"user1": {"name": "Alice", "age": 30},"user2": {"name": "Bob", "age": 25}
}# 用 dict() 函数创建
person = dict(name="Alice", age=30, city="New York")
字典的核心特点:
-
键值对结构:通过键(key)访问值(value)
-
无序性:键值对没有固定顺序(Python 3.7+ 保留插入顺序)
-
键唯一性:同一个字典中键不能重复(重复会覆盖)
-
高效查找:基于哈希表实现,查找速度极快
3.2 字典的常用操作
访问值:
person = {"name": "Alice", "age": 30}
print(person["name"]) # Alice(直接访问,键不存在会报错)
print(person.get("age")) # 30(get方法,键不存在返回None)
print(person.get("city", "Unknown")) # Unknown(指定默认值)
添加 / 修改键值对:
person = {"name": "Alice"}
person["age"] = 30 # 添加新键值对
person["name"] = "Bob" # 修改已有键的值
删除操作:
person = {"name": "Alice", "age": 30, "city": "New York"}
del person["city"] # 删除指定键
age = person.pop("age") # 删除并返回值
key, value = person.popitem() # 删除最后一个键值对(3.7+)
遍历字典:
person = {"name": "Alice", "age": 30, "city": "New York"}# 遍历键
for key in person:print(key) # name, age, city# 遍历值
for value in person.values():print(value) # Alice, 30, New York# 遍历键值对
for key, value in person.items():print(f"{key}: {value}")
3.3 字典的键与值规则
键的要求:
-
必须是不可变类型(字符串、数字、元组等)
-
不能是列表(列表是可变的)
-
必须唯一(重复键会被后面的覆盖)
valid_dict = {(1, 2): "tuple_key"} # 合法(元组作为键)
invalid_dict = {[1, 2]: "list_key"} # 错误(列表不能作为键)
值的特点:
-
可以是任意类型(包括列表、字典等可变类型)
-
可以重复
-
可变值可以被修改
my_dict = {"hobbies": ["reading", "music"]}
my_dict["hobbies"].append("sports") # 可以修改列表值
3.4 常见错误及解决
- 访问不存在的键:
# 错误示例
person = {"name": "Alice"}
print(person["age"]) # KeyError
# 解决:用 get() 方法
print(person.get("age", 0)) # 0(指定默认值)
- 混淆键和值:
# 错误示例
person = {"name": "Alice"}
print(person["Alice"]) # 想用值查键,会报错
# 解决:如果需要反向查找,需手动实现
四、实战练习
练习 1:列表操作
实现功能:创建 1-5 的列表,添加 6,在索引 2 插入 7,移除 3,排序后反转
# 代码实现
nums = [1, 2, 3, 4, 5]
nums.append(6)
nums.insert(2, 7)
nums.remove(3)
nums.sort()
nums.reverse()
print(nums) # 输出:[7, 6, 5, 4, 2, 1]
练习 2:学生信息管理
用字典实现学生信息的增删改查
# 代码实现
students = {}
# 添加信息
students["Alice"] = 20
students["Bob"] = 21
# 输出所有学生
for name, age in students.items():print(f"{name}: {age}")
# 修改信息
students["Alice"] = 22
# 删除信息
del students["Bob"]
print(students) # 输出:{'Alice': 22}
五、总结
-
列表:可变有序集合,适合需要频繁修改的数据
-
元组:不可变有序集合,适合存储固定数据或作为字典键
-
字典:键值对结构,适合通过唯一标识快速查找数据
选择合适的数据结构能让代码更高效、更易维护。建议多做练习,熟练掌握它们的操作方法和应用场景。
下一篇将讲解集合与推导式,敬请关注!如果有疑问欢迎在评论区交流~