字典(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 模式。