开始之前
列表适合一组有顺序、含义相近的元素。但一条样本记录可能同时包含编号、温度和状态;只看 index 0、1、2 很难知道每个位置代表什么。字典用有意义的 key 标记不同信息。
本课先学习 dictionary 的 key-value 组织方式,再认识内容固定的 tuple。最后根据“是否需要标签”和“是否允许修改”选择结构,而不是把所有数据都放进同一种容器。
概念 01
Dictionary 用 key-value pair 保存有标签的记录
样本编号、温度和状态含义不同,用名称标记后,代码不必靠记忆位置来理解记录。
Dictionary 的英文全称是 Dictionary,中文叫字典,Python 写法使用花括号 {}。例如 sample_record = {"sample_id": "A17", "temperature": 22.5} 会创建一个 dictionary,再把它保存在变量中。它适合保存一条由不同字段组成的记录。
Key 的英文全称是 Key,中文叫键,是冒号左边用于标记信息的名称,例如 "sample_id"。Value 的英文全称是 Value,中文叫值,是冒号右边真正保存的数据,例如 "A17"。实际读取时,key 帮助 Python 找到对应 value。
Key-value pair 的英文全称是 Key-value pair,中文叫键值对,Python 写成 "sample_id": "A17"。一个 pair 把 key 与 value 连接起来,dictionary 中不同 pair 用逗号分隔。实际用途是让每项信息既有内容,也有清楚标签。
- Dictionary 使用 {}
- Key 是信息标签
- Value 是标签对应的数据
- Key-value pair 写成 key: value
- 逗号分隔多个键值对
创建一条有标签的样本记录
sample_record 是 dictionary;sample_id 与 temperature 是 key,A17 与 22.5 是各自的 value。
点击“运行”后,程序输出会显示在这里。
概念 02
用 key 访问、修改和增加 dictionary 数据
程序可以用有意义的名称直接找到字段,而不需要记住它在第几个位置。
Dictionary access 的英文全称是 Dictionary access,中文叫字典访问,Python 写成 record["key"]。例如 sample_record["temperature"] 会产生 22.5。列表用数字 index 访问位置;字典用 key 访问有标签的 value,这是两种结构最直观的区别。
Dictionary 也能修改:sample_record["temperature"] = 23.0 会替换现有 value。使用一个尚不存在的新 key,例如 sample_record["status"] = "ready",会增加新的 key-value pair。实际用途是更正记录或补充字段。
读取、修改和增加都使用方括号,但方括号里的内容是 key,不是列表的数字位置。写代码前先看变量保存的是 list 还是 dictionary,再决定方括号里应放 index 还是 key。
- record[key] 读取 value
- 列表使用 index,字典使用 key
- 已有 key 赋值会修改 value
- 新 key 赋值会增加 pair
- key 必须与字典中的写法一致
读取温度、修改数值并增加状态
第一次访问产生旧温度;随后同一个 key 被修改,并通过新 key 增加 status。
点击“运行”后,程序输出会显示在这里。
概念 03
遍历 key,并从 KeyError 中检查拼写和大小写
逐个处理记录字段时可以直接遍历 key;访问不存在的 key 时,错误信息会指出需要核对的名称。
for key in sample_record: 会让 loop variable key 依次得到 dictionary 中的每个 key。循环内再写 sample_record[key] 就能取得当轮对应的 value。这个基础写法足以逐项显示记录,也能复用 M4 已学的 for loop。
KeyError 的英文全称是 Key Error,Python 错误类型写成 KeyError,中文叫键不存在错误。record = {"temperature": 22.5} 后读取 record["Temperature"] 会显示 KeyError: 'Temperature',因为 dictionary 中没有完全相同的 key。它的实际用途是提醒你检查错误行、实际 key、拼写和大小写。
String 区分大小写,因此 "temperature" 与 "Temperature" 是不同 key。调试时先看错误最后一行和行号,再查看 dictionary 创建处有哪些 key;不要随意添加一个新 key 来掩盖读取错误。
- for key in dictionary 逐个取得 key
- dictionary[key] 取得当轮 value
- KeyError 表示 key 不存在
- key 的拼写和大小写必须一致
- 对照创建处与错误行调试
逐项显示记录的 key 与 value
每轮 key 得到一个字段名,sample_record[key] 再读取这个字段对应的 value。
点击“运行”后,程序输出会显示在这里。
概念 04
Tuple 保存固定顺序,并根据任务选择数据结构
有些数据需要保持固定,有些需要更新;根据数据含义选择结构,会让程序更清楚也更不容易误改。
Tuple 的英文全称是 Tuple,中文叫元组,Python 写法使用圆括号 ()。例如 location = (-37.8, 144.9) 创建一个有顺序的 tuple;location[0] 和 location[1] 仍使用 index 访问。它适合保存顺序明确、创建后不应被修改的一小组值。
Immutable 的英文全称是 Immutable,中文叫不可变的。Tuple 是 immutable,所以 location[0] = -38.0 会产生 TypeError,表示这个 tuple 不支持修改元素。它的实际用途是表达“这组值应保持固定”;如果数据需要更正或追加,应选择 mutable list。
选择规则可以保持简单:一组有顺序且会修改或追加的同类值用 list;一条需要名称标记不同字段的记录用 dictionary;一组有固定顺序且不应修改的值用 tuple。选择依据是数据含义,不是哪个括号更短。
- Tuple 使用 (),有顺序并支持 index
- Immutable 表示创建后不能修改元素
- 会更新的一组值选 list
- 有标签的记录选 dictionary
- 固定的一组值选 tuple
使用 tuple 保存固定坐标
location 是 tuple,两个 element 有固定顺序;可以按 index 读取,但不应修改其中的位置。
点击“运行”后,程序输出会显示在这里。
常见错误
这些写法为什么不工作
错误不是失败,而是 Python 告诉你“这部分我无法理解”。先找到差异,再一次只改一个问题。
访问的 key 大小写与创建时不同
KeyError 给出的名称是程序尝试读取的 key。回到 dictionary 创建处逐字比较,特别检查 String 的大小写。
record = {"temperature": 22.5}
print(record["Temperature"])record = {"temperature": 22.5}
print(record["temperature"])尝试修改 immutable tuple
Tuple 的 element 不能在创建后用 index 替换。需要更新的数据应放进 mutable list;固定数据才选择 tuple。
location = (-37.8, 144.9) location[0] = -38.0
location = [-37.8, 144.9] location[0] = -38.0
引导修改
更新 dictionary,并读取固定 tuple 数据
这不是正式练习。跟着步骤修改已有代码,观察每次改变如何影响程序。
- 1把 sample_record 中 temperature 的 value 修改为 23.0。
- 2增加 key "status",value 使用 "ready"。
- 3分别用 key 输出 sample_id 和 status。
- 4location 是不修改的 tuple;使用 index 输出它的第二个 element。
完成后:记录中的温度为 23.0,并增加 ready 状态;输出 A17、ready 和 tuple 的第二个值 144.9。
修改这段代码
先运行,再按左侧步骤逐项修改。你的草稿会保存在这个浏览器中。
点击“运行”后,程序输出会显示在这里。
正式练习
现在独立完成 2 道练习
先运行代码观察问题,再点击“检查答案”。检查只关心题目要求的结果,不要求你照抄参考写法。
正式练习
创建有标签的样本记录
创建名为 sample_record 的字典,必须包含三个 key-value pair:sample_id 对应字符串 A17、temperature 对应数字 22.5、status 对应字符串 ready。必须使用 key 访问,把读取的 sample_id 和 status 分别保存到变量,再使用包含变量插值的 f-string 输出 Sample: A17 和 Status: ready;不要固定写死这两个结果。
点击“运行”后,程序输出会显示在这里。
需要一点提示?
先自己尝试一次;卡住时再逐级打开提示。
本课总结
本课小结
- 1Dictionary 使用 {} 保存 key-value pair,通过 key 读取、修改或增加 value。
- 2for key in dictionary 可以直接遍历 key;KeyError 时检查错误行、实际 key、拼写和大小写。
- 3Tuple 使用 () 保存有顺序但 immutable 的值;可以读取,不能修改元素。
- 4List 适合会变化的有序数据,dictionary 适合有标签的记录,tuple 适合固定数据。