第 20 课 · 阶段三 · 数据结构

字典 Dict

字典用“键值对”存数据,像查字典一样靠键找值。这一课掌握字典的创建、增删改查、遍历与常用方法。

第 20 课阶段三 · 数据结构难度:入门建议时长:40 分钟关键词:键值对 · 增删改查 · 遍历

🎯 学完本课你将掌握

  • 创建字典并理解键值对
  • 掌握字典的增、删、改、查
  • 会用多种方式遍历字典
  • 了解 get 方法与字典应用场景

一、创建字典

创建字典.py
1person = {"name": "小明", "age": 10, "city": "广州"}
2print(person) # {'name': '小明', ...}
3print(person["name"]) # 小明 用键取值
4empty = {}
✅ 要点
字典以“键: 值”成对出现,键唯一且不可变(常用字符串),值可以是任何类型。

二、增、改、查

增改查.py
1d = {"name": "小明", "age": 10}
2d["score"] = 95 # 键不存在→新增
3d["age"] = 11 # 键已存在→修改
4print(d) # {'name': '小明', 'age': 11, 'score': 95}
5print(d["score"]) # 95

三、get():安全取值

⚠️ 注意
直接 d["不存在"] 会报 KeyError;用 d.get("不存在") 返回 None,或 d.get("不存在", 0) 返回默认值。
get 用法.py
1d = {"name": "小明"}
2print(d.get("age")) # None 不报错
3print(d.get("age", 0)) # 0 指定默认值

四、删除

删除.py
1d = {"a": 1, "b": 2, "c": 3}
2d.pop("a") # 删除键a并返回其值
3del d["b"] # 删除键b
4print(d) # {'c': 3}
5d.clear() # 清空
6print(d) # {}

五、遍历字典的四种方式

遍历.py
1d = {"语文": 92, "数学": 88, "英语": 95}
2for k in d: # 遍历键
3 print(k, end=" ")
4print()
5for v in d.values(): # 遍历值
6 print(v, end=" ")
7print()
8for k in d.keys(): # 显式遍历键
9 print(k, end=" ")
10print()
11for k, v in d.items(): # 同时遍历键和值(最常用)
12 print(f"{k}: {v}", end=" ")
13print()

六、判断键是否存在

判断键.py
1d = {"name": "小明"}
2print("name" in d) # True
3print("age" in d) # False

七、应用场景:统计词频

统计词频.py
1words = ["apple", "banana", "apple", "orange", "banana", "apple"]
2count = {}
3for w in words:
4 count[w] = count.get(w, 0) + 1
5print(count) # {'apple': 3, 'banana': 2, 'orange': 1}

八、常见错误与解决

常见错误与解决

错误现象原因 / 解决方法
KeyError: 'xxx'访问了不存在的键,用 get() 或先 in 判断。
TypeError: unhashable type: 'list'用列表当键了,键必须可哈希(列表、字典不可当键)。
遍历时修改字典遍历中增删键会报错,可先复制 list(d.keys()) 再操作。
✍️ 小练习
创建一个通讯录字典(至少 3 人),用 get 查询一个不存在的人返回默认提示,再用 items() 遍历打印所有人的电话。
📌 本节小结
字典是“键值对”容器:用键增改查、get 安全取值、items() 同时遍历键值、in 判断键存在。它适合一切“按名字找数据”的场景,是数据分析与项目开发的核心结构。