杰瑞科技汇

Python如何修改dictionary中的键值对?

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

Python如何修改dictionary中的键值对?-图1
(图片来源网络,侵删)

核心概念:字典由“键:值”对组成

要修改字典,你几乎总是需要通过它的 来操作。


修改单个键的值

这是最常见的修改方式,如果你要修改的键已经存在于字典中,使用赋值运算符 就会用新值覆盖旧值。

语法: dictionary[key] = new_value

示例: 假设我们有一个学生信息的字典,现在要更新学生的年龄。

Python如何修改dictionary中的键值对?-图2
(图片来源网络,侵删)
# 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'}

删除键值对

有几种方法可以删除字典中的元素。

Python如何修改dictionary中的键值对?-图3
(图片来源网络,侵删)

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}
分享:
扫描分享到社交APP
上一篇
下一篇