第 06 节:一条数据不够时:列表和字典
本节 objectives:
- 用列表保存有顺序的多条数据
- 用字典保存一个对象的多个字段
- 判断一个小程序的数据该长成什么形状
真正的小程序很快就不止一个值
一个待办事项可以只是字符串,但真正使用时你会想知道它是否完成。多个待办事项还需要顺序。Python 列表保存一串有顺序的值,字典保存键和值的对应关系1。
这节不背所有方法,只练一个判断:顺序的一组东西用列表;一个东西的多个字段用字典。
讲解
列表适合“多个同类项”。 tasks = ["read", "write"] 表示一串任务标题。列表可以追加、遍历,也可以按位置取值1。
字典适合“一个东西的字段”。 {"title": "read", "done": False} 把同一个任务的标题和完成状态放在一起。键像字段名,值是字段内容1。
嵌套结构表达真实数据。 多个任务可以写成“列表里放字典”:每个字典是一条任务,整个列表是任务清单。
数据形状先于代码。 如果数据形状选错,后面循环和函数会变绕。先写一条样例数据,再写处理代码。
跟我做一遍(worked example)
打印任务清单:
外层列表负责顺序,内层字典负责字段。循环每次拿到一条任务,再根据 done 选择显示标记。
换你补全(faded example)
补全代码,向列表追加一条新任务:
答案:
关键判断点是:刚创建的任务通常尚未完成,所以 done 应该是 False。
小结 + 通向下一节
列表和字典让程序能处理一组有结构的数据。下一节把这些数据写进文件,让程序关闭后还能记住它们。
Footnotes
-
Python Tutorial: Data Structures — https://docs.python.org/3/tutorial/datastructures.html ↩ ↩2 ↩3
练习
Level 1: 建三条任务数据。
- 做法:创建一个列表,里面放三个任务字典,每个字典都有
title和done。
提示 1
先复制一条任务,再改值。
Level 2: 写 count_done(tasks)。
- 做法:函数接收任务列表,返回已完成数量。
提示 2
从 count = 0 开始。
看参考答案
这是第 4 节累加器和第 5 节函数的合体。
自评