使用Python的update字典方法,是否可以只更新一个键值对?
如果我有两个字典,内容如下:
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"]