下面我将从最基本到更高级的用法,详细讲解如何修改字典。

核心概念:字典由“键:值”对组成
要修改字典,你几乎总是需要通过它的 键 来操作。
修改单个键的值
这是最常见的修改方式,如果你要修改的键已经存在于字典中,使用赋值运算符 就会用新值覆盖旧值。
语法:
dictionary[key] = new_value
示例: 假设我们有一个学生信息的字典,现在要更新学生的年龄。

# 1. 创建一个字典
student = {
"name": "Alice",
"age": 20,
"city": "New York"
}
print("修改前的字典:", student)
# 输出: 修改前的字典: {'name': 'Alice', 'age': 20, 'city': 'New York'}
# 2. 修改 'age' 对应的值
student["age"] = 21
# 3. 修改 'city' 对应的值
student["city"] = "Boston"
print("修改后的字典:", student)
# 输出: 修改后的字典: {'name': 'Alice', 'age': 21, 'city': 'Boston'}
添加新的键值对
如果你对一个不存在的键进行赋值,Python 不会报错,而是会向字典中 添加 这个新的键值对。
语法:
dictionary[new_key] = new_value
示例:
我们给 student 字典添加一个 "major" (专业) 字段。
student = {
"name": "Alice",
"age": 21,
"city": "Boston"
}
print("添加前的字典:", student)
# 输出: 添加前的字典: {'name': 'Alice', 'age': 21, 'city': 'Boston'}
# 添加一个新的键值对
student["major"] = "Computer Science"
print("添加后的字典:", student)
# 输出: 添加后的字典: {'name': 'Alice', 'age': 21, 'city': 'Boston', 'major': 'Computer Science'}
删除键值对
有几种方法可以删除字典中的元素。

a) del 语句
这是最直接的方法,如果键不存在,会抛出 KeyError。
语法:
del dictionary[key]
示例:
我们删除 student 字典中的 "city" 字段。
student = {
"name": "Alice",
"age": 21,
"city": "Boston",
"major": "Computer Science"
}
print("删除前的字典:", student)
# 输出: 删除前的字典: {'name': 'Alice', 'age': 21, 'city': 'Boston', 'major': 'Computer Science'}
# 删除 'city' 键值对
del student["city"]
print("删除后的字典:", student)
# 输出: 删除后的字典: {'name': 'Alice', 'age': 21, 'major': 'Computer Science'}
b) pop() 方法
pop() 方法会删除指定键的值,并 返回被删除的值,如果键不存在,你可以提供一个默认值来避免 KeyError,否则也会抛出 KeyError。
语法:
deleted_value = dictionary.pop(key, default_value)
示例:
student = {
"name": "Alice",
"age": 21,
"major": "Computer Science"
}
# 删除 'age' 并获取其值
removed_age = student.pop("age")
print(f"被删除的年龄是: {removed_age}")
# 输出: 被删除的年龄是: 21
print("pop()后的字典:", student)
# 输出: pop()后的字典: {'name': 'Alice', 'major': 'Computer Science'}
# 尝试删除一个不存在的键,并提供默认值
removed_gpa = student.pop("gpa", "N/A") # 'gpa' 不存在,则返回 'N/A',不报错
print(f"被删除的GPA是: {removed_gpa}")
# 输出: 被删除的GPA是: N/A
c) popitem() 方法
Python 3.7+ 版本中,popitem() 会 随机删除 并返回字典中的最后一个键值对(在旧版 Python 中是随机删除),当字典为空时,它会抛出 KeyError,这个方法通常用于实现“后进先出”(LIFO)的栈结构。
语法:
last_item = dictionary.popitem()
示例:
student = {
"name": "Alice",
"major": "Computer Science",
"year": "Senior" # 这是最后一个键值对
}
# 删除最后一个键值对
last_pair = student.popitem()
print(f"被删除的最后一项是: {last_pair}")
# 输出: 被删除的最后一项是: ('year', 'Senior')
print("popitem()后的字典:", student)
# 输出: popitem()后的字典: {'name': 'Alice', 'major': 'Computer Science'}
使用 .update() 方法批量更新
.update() 方法非常强大,可以一次性修改多个键值对或添加多个新的键值对,它的参数可以是另一个字典,或者由键值对组成的可迭代对象(如元组列表)。
语法:
dictionary.update(other_dictionary) 或 dictionary.update([(key1, val1), (key2, val2)])
示例: 假设我们需要一次性更新学生的年级和专业。
student = {
"name": "Alice",
"age": 21,
"major": "Computer Science"
}
# 准备一个包含更新内容的字典
updates = {
"age": 22, # 修改已存在的键
"year": "Senior", # 添加新的键
"major": "Data Science" # 修改已存在的键
}
# 使用 update 方法进行更新
student.update(updates)
print("update()后的字典:", student)
# 输出: update()后的字典: {'name': 'Alice', 'age': 22, 'major': 'Data Science', 'year': 'Senior'}
使用字典推导式进行条件修改
这是一种更高级、更 Pythonic 的方式,通常用于基于现有字典的值来创建一个修改过的新字典,或者直接在原字典上进行修改。
示例 1:创建一个新字典(值加倍)
prices = {"apple": 50, "banana": 20, "orange": 30}
# 创建一个新字典,其中所有价格都加倍
new_prices = {key: value * 2 for key, value in prices.items()}
print("原字典:", prices)
print("新字典:", new_prices)
# 输出:
# 原字典: {'apple': 50, 'banana': 20, 'orange': 30}
# 新字典: {'apple': 100, 'banana': 40, 'orange': 60}
示例 2:原地修改字典(仅修改大于25的值)
prices = {"apple": 50, "banana": 20, "orange": 30}
# 原地修改,将价格大于25的商品打8折
for key in prices:
if prices[key] > 25:
prices[key] = prices[key] * 0.8
print("修改后的原字典:", prices)
# 输出: 修改后的原字典: {'apple': 40.0, 'banana': 20, 'orange': 24.0}
总结表格
| 操作 | 方法/语法 | 描述 | 示例 |
|---|---|---|---|
| 修改值 | dict[key] = new_value |
键存在则修改,不存在则添加。 | my_dict['a'] = 1 |
| 添加项 | dict[new_key] = new_value |
同上,当键不存在时即为添加。 | my_dict['b'] = 2 |
| 删除项 | del dict[key] |
删除指定键值对,键不存在则报错。 | del my_dict['a'] |
| 删除并返回 | value = dict.pop(key) |
删除并返回值,键不存在则报错。 | val = my_dict.pop('b') |
| 安全删除 | value = dict.pop(key, default) |
删除并返回值,键不存在则返回默认值。 | val = my_dict.pop('c', None) |
| 删除最后一项 | item = dict.popitem() |
删除并返回最后一项(Python 3.7+)。 | last_item = my_dict.popitem() |
| 批量更新 | dict.update(other_dict) |
用另一个字典更新当前字典。 | my_dict.update({'c': 3, 'd': 4}) |
| 条件修改 | 字典推导式 | 基于条件创建或修改字典。 | {k: v*2 for k, v in my_dict.items()} |
重要提示:键的唯一性
字典中的 键必须是唯一的,当你尝试添加一个已存在的键时,你实际上是在 修改 它的值,而不是创建一个新条目。
my_dict = {'a': 1, 'b': 2}
my_dict['a'] = 99 # 'a' 已经存在,所以这是修改操作
print(my_dict)
# 输出: {'a': 99, 'b': 2} 