Python 基础入门(第七篇):字典——键值对的万能仓库
列表和元组用数字索引来查找元素,但有时我们需要更直观的“标签”,比如通过“姓名”找到“年龄”,字典(dict)就是为此而生——它以键-值对(key-value)的形式存储数据,键可以是字符串、数字等不可变类型,通过键可以快速访问对应的值。字典是可变的,可以随时增删改。
1. 创建与访问字典
字典用花括号 {} 表示,每个键值对用冒号 : 分隔。
# 创建一个学生字典
student = {
"name": "小明",
"age": 18,
"score": 95.5
}
print(student["name"])# 输出:小明
print(student.get("age")) # 另一种访问方式,键不存在时返回None
注意:如果访问不存在的键,student["gender"] 会报错,而 student.get("gender") 安全返回 None。
2. 常用操作
# 新增/修改(键存在时修改,不存在时新增)
student["gender"] = "男"# 新增
student["age"] = 19# 修改
# 删除
del student["score"]# 删除键值对
popped = student.pop("gender") # 删除并返回被删除的值
# 查看所有键、值、键值对
print(student.keys())# dict_keys(['name', 'age'])
print(student.values())# dict_values(['小明', 19])
print(student.items())# dict_items([('name', '小明'), ('age', 19)])
3. 遍历字典
最常用的是遍历 items(),同时获取键和值:
for key, value in student.items():
print(f"{key}: {value}")
也可以单独遍历键或值:
for key in student.keys():
print(key)
for value in student.values():
print(value)
4. 字典推导式
与列表推导式类似,可以快速生成字典:
# 生成1到5的平方字典
squares = {x: x**2 for x in range(1, 6)}
print(squares)# {1:1, 2:4, 3:9, 4:16, 5:25}
5. 小实战:学生成绩管理系统
用字典管理多个学生的成绩,实现增删改查:
students = {}# 空字典,键为姓名,值为成绩
while True:
print("\n1.添加2.查看3.修改4.删除5.退出")
choice = input("请选择:")
if choice == "1":
name = input("学生姓名:")
score = int(input("成绩:"))
students[name] = score
print(f"{name} 已添加")
elif choice == "2":
name = input("要查询的姓名:")
if name in students:
print(f"{name} 的成绩是{students[name]}")
else:
print("查无此人")
elif choice == "3":
name = input("要修改的姓名:")
if name in students:
students[name] = int(input("新成绩:"))
print("修改成功")
else:
print("查无此人")
elif choice == "4":
name = input("要删除的姓名:")
if name in students:
del students[name]
print("删除成功")
else:
print("查无此人")
elif choice == "5":
break
else:
print("无效选项")
这个程序演示了字典最典型的用途:快速通过名字查找对应的成绩。
6. 常见错误
用列表作为字典的键:键必须是不可变类型(字符串、数字、元组),列表可变,不能做键。
访问不存在的键:用 in 检查或使用 get() 避免报错。
遍历时修改字典:循环中直接 del 或 pop 可能引发错误,建议先收集要删除的键再统一处理。
【小结】字典是 Python 中极为强大的数据结构,能高效地通过键检索值。掌握字典后,可以轻松处理大量带标签的数据。【下篇预告】函数,将重复代码封装成可复用的模块,让程序更清晰高效。
相关推荐
Python基础入门6|字符串:文本处理的利器
Python速成上手5|列表与元组:管理一组数据
Python入门速成4:循环语句|while、for
End