是否有一个库函数可以实现像这样的非破坏性字典更新
def update(d,key,val) :
d=d.copy()
d[key]=val
return d
在 Python 中,没有直接用于非破坏性字典更新的内置库函数。但是,你可以使用多种方法来实现相同的结果。
1. 使用
dict.copy()
和更新
你展示的方法是有效的,并且是一种常见的方法:
def update(d, key, val):
d = d.copy()
d[key] = val
return d
此方法显式地创建原始字典的副本,然后修改并返回副本。
2. 使用字典解包
从 Python 3.5 开始,可以使用字典解包操作符
**
以更简洁的方式实现相同的结果:
def update(d, key, val):
return {**d, key: val}
此方法创建了一个新字典,其中包含原始字典的所有键值对,以及更新的键值对。
3. 使用
collections.ChainMap
(对于多个字典)
如果需要非破坏性地更新嵌套在其他字典中的字典,或者需要在不修改原始字典的情况下链接多个字典,则可以使用
collections.ChainMap
:
from collections import ChainMap
original_dict = {'a': 1, 'b': 2}
updated_dict = ChainMap({'b': 3, 'c': 4}, original_dict)
print(original_dict) # 输出: {'a': 1, 'b': 2}
print(updated_dict) # 输出: ChainMap({'b': 3, 'c': 4}, {'a': 1, 'b': 2})
ChainMap
创建了一个视图,该视图依次在基础字典中搜索键。可以通过修改
ChainMap
本身来进行更新,而不会影响原始字典。
这些方法都提供了非破坏性字典更新的功能。选择最适合你的方法取决于具体的用例和代码风格偏好。
标签:python,dictionary From: 78797095