17
字典(Dictionaries)
字典(Dictionaries):按 key 快速定位数据
你现在可能会困惑什么
“什么时候用 list,什么时候用 dict?”
如果你按位置取值,用 list; 如果你按字段名取值(name/email/age),用 dict。
一句话定义
字典是 key-value 映射结构,适合组织结构化数据。
生活类比
字典像通讯录: 你通过姓名(key)找到电话(value),而不是按第几行找。
最小可运行例子
user = {
"name": "Alice",
"age": 25,
"city": "Sydney",
}
print(user["name"]) # Alice
读取与更新
print(user.get("email")) # None
user["age"] = 26
user["email"] = "a@example.com"
删除与遍历
user.pop("city")
for k, v in user.items():
print(k, v)
实战例子:词频统计
text = "python ai python"
counter = {}
for w in text.split():
counter[w] = counter.get(w, 0) + 1
print(counter) # {'python': 2, 'ai': 1}
课堂小测(5 分钟)
- 建一个学生成绩 dict。
- 打印每位学生姓名和分数。
- 输出最高分学生。
课堂小测参考答案与判分点
- 参考答案方向:能写出可运行代码,并覆盖题目中的核心条件与边界输入。
- 判分点 1(正确性):主流程结果正确,关键分支可执行。
- 判分点 2(可读性):变量命名清晰,结构不过度嵌套。
- 判分点 3(健壮性):对空值、类型错误或异常输入有基础保护。
迁移任务(课后)
把“用户注册表单”数据组织成 dict,并做字段存在性检查。
本节验收标准
你能独立做到:
- 创建、读取、更新、删除 dict
- 使用
get()安全读取 - 用 dict 累计统计结果
常见报错与调试步骤(新手版)
- 报错看不懂:先读最后一行错误类型(如
TypeError、NameError),再回到对应代码行定位。 - 不确定变量值:在关键位置临时
print(变量, type(变量)),先确认数据是否符合预期。 - 改了代码却没生效:确认文件已保存、运行的是当前文件、终端环境(venv)是否正确。
常见误区
-
误区:
dict[key]永远安全。 -
正解:key 不存在会报错,不确定时优先
get()。 -
误区:key 可以随便用 list/dict。
-
正解:key 必须可 hash(通常用 str/int/tuple)。