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

时间:2014-09-12 22:06:24

标签: python python-2.7 dictionary

如果我有以下两个词:

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

是否可以使用dict 2更新dict1,但只能使用单个键,在本例中为'k1',以便结果如下:

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

谢谢!

1 个答案:

答案 0 :(得分:2)

只需使用键访问每个字典,然后将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),则会将key/values中的所有新dict2对添加到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"]