字典(dict)是 Python 最常用的数据结构之一,它用"键值对"存数据,就像一本真正的字典:拿着词(键)就能翻到解释(值)。这篇把日常必备的操作一次过完。
创建与查值
用花括号创建字典,键一般是字符串或数字:
student = {"name": "小明", "age": 18, "city": "杭州"}
print(student["name"]) # 输出: 小明
print(student["age"]) # 输出: 18
方括号直接取值,键不存在会报 KeyError。更稳的方式是 get(),取不到时给个默认值:
print(student.get("phone")) # 输出: None
print(student.get("phone", "未填写")) # 输出: 未填写
增与改
给不存在的键赋值就是新增,给已存在的键赋值就是修改,一个方括号两种用途:
student = {"name": "小明", "age": 18}
student["city"] = "杭州" # city 原来不存在,这是新增
student["age"] = 19 # age 已存在,这是修改
print(student) # 输出: {'name': '小明', 'age': 19, 'city': '杭州'}
想一次性并入另一个字典,用 update():
extra = {"grade": "高三", "age": 20}
student.update(extra)
print(student["age"]) # 输出: 20,同名键被覆盖
删
两个常用方法,按场景选:
student = {"name": "小明", "age": 18, "city": "杭州"}
city = student.pop("city") # 删除并返回对应的值
print(city) # 输出: 杭州
del student["age"] # 直接删除,不返回值
print(student) # 输出: {'name': '小明'}
pop() 的好处是能拿到被删的值;第二个参数给个默认值,键不存在时也不会报错。
遍历的几种姿势
日常遍历主要就三招:
scores = {"语文": 95, "数学": 88, "英语": 92}
# 只遍历键
for subject in scores:
print(subject) # 依次输出: 语文 数学 英语
# 只遍历值
for score in scores.values():
print(score) # 依次输出: 95 88 92
# 键和值一起拿(最常用)
for subject, score in scores.items():
print(f"{subject}: {score}") # 输出: 语文: 95 数学: 88 英语: 92
记住 items() 这个写法,实际项目里用得最多。
两个高频小技巧
判断键是否存在用 in,注意它查的是"键"不是"值":
scores = {"语文": 95, "数学": 88}
print("语文" in scores) # 输出: True
print(95 in scores) # 输出: False,95 是值不是键
统计次数时,get(key, 0) + 1 这个模式能省掉一堆 if 判断:
words = ["apple", "banana", "apple", "cherry", "banana", "apple"]
counts = {}
for w in words:
counts[w] = counts.get(w, 0) + 1
print(counts) # 输出: {'apple': 3, 'banana': 2, 'cherry': 1}
键不存在时 get(w, 0) 返回 0,加 1 就是第一次出现,这个写法值得背下来。
小结
- 取值优先用
get(),避免KeyError; - 赋值即增改:键不存在是新增,已存在是修改,批量合并用
update(); - 删除用
pop()(需要拿值时)或del; - 遍历首选
for k, v in d.items(); in判断的是键;统计类需求记住get(key, 0) + 1模式。