使用Python更新dict方法,是否可以只更新一个键、值对



如果我有两个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),您将添加从dict2dict1的任何新的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"]

最新更新