logo
17

字典(Dictionaries)

⏱️ 30分钟

字典(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 分钟)

  1. 建一个学生成绩 dict。
  2. 打印每位学生姓名和分数。
  3. 输出最高分学生。

课堂小测参考答案与判分点

  • 参考答案方向:能写出可运行代码,并覆盖题目中的核心条件与边界输入。
  • 判分点 1(正确性):主流程结果正确,关键分支可执行。
  • 判分点 2(可读性):变量命名清晰,结构不过度嵌套。
  • 判分点 3(健壮性):对空值、类型错误或异常输入有基础保护。

迁移任务(课后)

把“用户注册表单”数据组织成 dict,并做字段存在性检查。

本节验收标准

你能独立做到:

  • 创建、读取、更新、删除 dict
  • 使用 get() 安全读取
  • 用 dict 累计统计结果

常见报错与调试步骤(新手版)

  • 报错看不懂:先读最后一行错误类型(如 TypeErrorNameError),再回到对应代码行定位。
  • 不确定变量值:在关键位置临时 print(变量, type(变量)),先确认数据是否符合预期。
  • 改了代码却没生效:确认文件已保存、运行的是当前文件、终端环境(venv)是否正确。

常见误区

  • 误区:dict[key] 永远安全。

  • 正解:key 不存在会报错,不确定时优先 get()

  • 误区:key 可以随便用 list/dict。

  • 正解:key 必须可 hash(通常用 str/int/tuple)。