如果我有两个dict如下:
dict1 = {'k1':'v1', 'k2':'v2', 'k3':'v3'}
dict2 = {'k1':'v4', 'k4':'v5', 'k5':'v6'}
是否可以使用dict2更新dict1,但仅在单个密钥上,在这种情况下为'k1'
,因此结果如下:
dict1 = {'k1':'v4', 'k2':v2', 'k3':'v3'}
谢谢!
只需使用密钥访问每个dict,并将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
到dict1
的任何新的key/values
对,或者将dict1
中任何现有密钥的值更改为dict2
中相应密钥的值。
输出为:
{'k3': 'v3', 'k2': 'v2', 'k1': 'v4', 'k5': 'v6', 'k4': 'v5'}
正如jon Clements所建议的,在dict2没有相应密钥的情况下,使用默认值为dict1["k1"]
的dict.get
将保持dict1密钥的原始值,并避免keyError
:
dict1['k1'] = dict2.get("k1",dict1["k1"])
根据abarnet的评论,我们可以在访问其中一个之前检查两个密钥是否都存在:
if "k1" in dic1 and "k1" in dict2:
dict1["k1"] = dict2["k1"]