第 20 课 · 阶段三 · 数据结构
字典 Dict
字典用“键值对”存数据,像查字典一样靠键找值。这一课掌握字典的创建、增删改查、遍历与常用方法。
🎯 学完本课你将掌握
- 创建字典并理解键值对
- 掌握字典的增、删、改、查
- 会用多种方式遍历字典
- 了解 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"] # 删除键b4print(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) # True3print("age" in d) # False七、应用场景:统计词频
统计词频.py
1words = ["apple", "banana", "apple", "orange", "banana", "apple"]2count = {}3for w in words:4 count[w] = count.get(w, 0) + 15print(count) # {'apple': 3, 'banana': 2, 'orange': 1}八、常见错误与解决
常见错误与解决
| 错误现象 | 原因 / 解决方法 |
|---|---|
KeyError: 'xxx' | 访问了不存在的键,用 get() 或先 in 判断。 |
TypeError: unhashable type: 'list' | 用列表当键了,键必须可哈希(列表、字典不可当键)。 |
遍历时修改字典 | 遍历中增删键会报错,可先复制 list(d.keys()) 再操作。 |
✍️ 小练习
创建一个通讯录字典(至少 3 人),用 get 查询一个不存在的人返回默认提示,再用 items() 遍历打印所有人的电话。
📌 本节小结
字典是“键值对”容器:用键增改查、get 安全取值、items() 同时遍历键值、in 判断键存在。它适合一切“按名字找数据”的场景,是数据分析与项目开发的核心结构。