使用Python的update字典方法,是否可以只更新一个键值对?

0 投票
1 回答
3806 浏览
提问于 2025-04-21 10:11

如果我有两个字典,内容如下:

dict1 = {'k1':'v1', 'k2':'v2', 'k3':'v3'}
dict2 = {'k1':'v4', 'k4':'v5', 'k5':'v6'}

那么我能不能只用字典2来更新字典1的一个特定键,这里是 'k1',让结果变成这样:

dict1 = {'k1':'v4', 'k2':v2', 'k3':'v3'}

谢谢!

1 个回答

3

你只需要用键来访问每个字典,然后把dict1中的某个键的值重新赋值为dict2中对应键的值就可以了:

dict1 = {'k1':'v1', 'k2':'v2', 'k3':'v3'}
dict2 = {'k1':'v4', 'k4':'v5', 'k5':'v6'}
dict1["k1"] = dict2["k1"]
dict1
{'k3': 'v3', 'k2': 'v2', 'k1': 'v4'}

关于你的评论:

如果你使用了 dict1.update(dict2),那么会把dict2中的新 key/value 对添加到dict1中,或者把dict1中已有键的值改成dict2中对应键的值。

输出结果会是:

{'k3': 'v3', 'k2': 'v2', 'k1': 'v4', 'k5': 'v6', 'k4': 'v5'}

正如jon Clements所建议的,如果dict2没有对应的键,可以使用 dict.get 方法,并设置默认值为 dict1["k1"],这样就能保留dict1中该键的原始值,并避免出现 keyError 错误:

dict1['k1'] = dict2.get("k1",dict1["k1"])

根据abarnet的评论,我们可以在访问任何键之前,先检查这两个键是否都存在:

if "k1" in dic1 and "k1" in dict2:
    dict1["k1"] = dict2["k1"]

撰写回答