列表擅长保存一组同类数据,但现实中的信息往往带有明确含义:姓名、城市、年龄和职业。字典可以把这些信息组织起来。
字典使用花括号,以“键:值”的形式保存数据:
person = { "name": "Linda", "city": "Shanghai", "age": 20, "is_working": True}
其中 "name" 是键,"Linda" 是对应的值。
键应该保持唯一。如果出现相同的键,后面的值会覆盖前面的值。
二、读取字典数据
print(person["name"])print(person["city"])
如果键不存在,方括号写法会触发 KeyError。
更安全的方式是使用 get():
print(person.get("job"))print(person.get("job", "暂未填写"))
第二个参数是键不存在时使用的默认值。
三、新增、修改和删除
新增数据:
person["job"] = "产品经理"
修改数据:
person["age"] = 21
删除数据:
del person["is_working"]
也可以使用 pop():
removed_city = person.pop("city")
四、判断键是否存在
if "name" in person: print("姓名已经填写")
对字典使用 in 时,默认检查的是键,而不是值。
五、遍历字典
遍历所有键和值:
for key, value in person.items(): print(f"{key}:{value}")
只遍历键:
for key in person.keys(): print(key)
只遍历值:
for value in person.values(): print(value)
六、列表中保存字典
多个结构相同的对象,可以使用“列表套字典”:
students = [ {"name": "小明", "score": 88}, {"name": "小红", "score": 95}, {"name": "小刚", "score": 76}]for student in students: print(f"{student['name']}:{student['score']}分")
外层列表表示“多个学生”,每个字典表示“一个学生的完整信息”。
七、第一周知识串联
到今天为止,我们已经使用了:
这些知识已经足够完成一个小型命令行程序。
基础练习
- 1. 创建一本图书的字典,包含书名、作者、价格和库存。
- 3. 使用
get() 读取可能不存在的折扣字段。
今日项目:学生成绩管理器
students = []while True: print("\n1. 添加学生") print("2. 查看所有学生") print("3. 查看平均分") print("4. 退出") choice = input("请选择功能:").strip() if choice == "1": name = input("请输入学生姓名:").strip() score = float(input("请输入成绩:")) student = { "name": name, "score": score } students.append(student) print("添加成功") elif choice == "2": if len(students) == 0: print("暂无学生数据") else: for index in range(len(students)): student = students[index] print(f"{index + 1}. {student['name']}:{student['score']:.1f}分") elif choice == "3": if len(students) == 0: print("暂无学生数据") else: total_score = 0 for student in students: total_score += student["score"] average_score = total_score / len(students) print(f"平均分:{average_score:.2f}") elif choice == "4": print("程序已退出") break else: print("输入无效,请重新选择")
查漏测试
第一周复盘
如果你能不看答案完成以下任务,第一周基础就比较稳固:
学完语法不等于掌握编程。把知识组合起来解决问题,才是第一周真正的终点。