为什么要使用字典?
如果要在 Python 中保存一名学生的信息,你可能会写三个变量:
name = "小明", age = 18,city = "杭州"
只有三项信息时还不麻烦。可一旦加入成绩、联系方式、课程进度,变量就会越来越多。
这时可以把相关信息装进一个“字典”。
student = { "name": "小明", "age": 18, "city": "杭州"}
1. 字典是什么?
可以把字典想成一个带标签的信息柜。
• "name" 是标签,叫作键(key)
• "小明" 是标签对应的内容,叫作值(value)
键和值之间用冒号 : 连接,每一组键值对之间用逗号 , 分开,整个字典放在花括号 {} 中。
有了“标签”,程序就能快速找到需要的信息。
2. 查询:根据键找到值
想知道学生姓名,只要把键放进方括号:
print(student["name"])
运行结果:
小明
如果不确定某个键是否存在,可以使用 get():
student.get("phone", "暂未填写")找不到 "phone" 时,程序不会报错,而是输出“暂未填写”。
3. 增加:使用一个新键
给学生加入成绩:
student["score"] = 95
因为 "score" 原来不存在,所以这是增加。
增加以后,把整个 student 打印出来:
print(student){ 'name': '小明', 'age': 18, 'city': '杭州', 'score': 95}
这就是增加后的 student,其中包含全部四个元素:name、age、city 和新加入的 score。
4. 修改:给已有的键重新赋值
学生过了一年,年龄需要更新:
student["age"] = 19
因为 "age" 已经存在,所以原来的 18 会被修改为 19。
修改以后,再把整个 student 打印出来:
print(student)data = { 'name': '小明', 'age': 19, 'city': '杭州', 'score': 95}
这就是修改后的 student。可以看到,字典里没有新增第二个 age,而是旧值 18 被新值 19 替代。
一句话记忆:
5. 删除:移走不再需要的信息
如果不想继续保存城市,可以使用 del:
del student["city"]
删除以后,打印最新的 student:
stu = { 'name': '小明', 'age': 19, 'score': 95}
也可以使用 pop(),它会在删除的同时返回被删掉的值:
score = student.pop("score") 删除成绩后,先输出被删除的成绩,再输出最新的完整 student:
print(score)print(student)95 {'name': '小明', 'age': 19}
6. 字典在真实程序中怎么用?
字典不只是在“整理信息”,它还可以参与程序判断。
student = { "name": "小明", "age": 19, "city": "杭州", "score": 92}
if student["score"] >= 60: print(student["name"], "通过了测试")else: print(student["name"], "需要继续练习")
运行结果:
小明 通过了测试
程序从字典中取出成绩,再根据成绩决定输出什么。用户资料、商品信息、程序设置和接口数据,都常用字典来组织。
7. 信息更多时:嵌套字典
现在,“成绩”不再只有一个数字,而是包含 Python、数学两门课。怎么办?
可以让 "scores" 对应的值,再变成一个字典:
student = { "name": "小明", "age": 19, "city": "杭州", "scores": { "Python": 92, "数学": 88 }}print(student)
这就是嵌套字典:字典的值可以是另一个字典,于是形成多层数据结构,像俄罗斯套娃一样,一层里面还有一层。
此时完整的 student 是:
{ "name": "小明", "age": 19, "city": "杭州", "scores": { "Python": 92, "数学": 88 }}
查询 Python 成绩时:
print(student["scores"]["Python"])
可以拆成两步理解:
scores = student["scores"] # 先进入成绩这一层scores["Python"] # 再找到 Python
8. 它为什么看起来像 JSON?
因为 JSON 也使用“键和值”组织数据,外形确实很像字典,但两者不是同一个东西。
Python 可以用 json 模块完成转换:
import jsonstudent = { "name": "小明", "age": 19, "city": "杭州", "scores": { "Python": 92, "数学": 88 }}# indent=4 实现格式化输出,中文正常显示json_text = json.dumps(student, ensure_ascii=False, indent=4)student_again = json.loads(json_text)print(json_text)
记住一句话就够了:
字典是 Python 程序里正在使用的数据;JSON 是保存或传递数据时常用的文本格式。
最后,用一张表记住
| |
|---|
| student["name"] |
| student.get("phone", "暂未填写") |
| student["score"] = 95 |
| student["age"] = 19 |
| del student["city"] |
先把这五种写法亲手运行一遍,你就已经迈过了 Python 字典最重要的门槛。
参考与延伸阅读:
• 菜鸟教程:Python 字典(Dictionary)
• Python 官方文档:映射类型 dict
• Python 官方文档:json 编码器和解码器
• 知乎:Python 嵌套字典相关文章