我在这里看了几个问题,似乎没有一个问题。假设我有2个词典,它们是dict1
{'A': 25 , 'B': 41, 'C': 32}
和dict2
{'D':21, 'A': 12, 'B':62}
我正在编写一个程序,我需要添加与相同键相关联的值。像这样:
{'A': [25 + 12], 'B': [41 + 62], 'C': [32], 'D': [21]}
答案 0 :(得分:0)
我将假设您正在努力保留dict_1作为结果
for key in dict_1:
if key in dict_2:
dict_1[key] = dict_1[key] + dict_2[key]
需要复制存在于2但不包含在1
中的键值对for key in dict_2:
if key not in dict_1:
dict_1[key] = dict_2[key]
这可能是最简单的方法
答案 1 :(得分:0)
>>> dict1= {'A':25,'B':41,'C':32}
>>> dict2= {'D':21, 'A':12, 'B':62}
>>> for e in dict2:
if e in dict1:
dict1[e]=dict1[e]+dict2[e]
else:
dict1[e]=dict2[e]
现在你的dict1成为你想要的答案。希望有所帮助。 :)
答案 2 :(得分:0)
我认为您在解决方案中缺少的是使用词典附带的keys
- 方法和get
- 方法。 keys
- 方法将返回字典中键值对中所有键的列表。然而,get
- 方法将返回与字典中的键相关联的值(如果存在),或返回默认值(默认为None
)。
要做你想做的事,我建议这样的事情:
x = {'a': 1, 'b': 1, 'c': 1} # dictionary x
y = {'c': 1, 'd': 1, 'e': 1} # dictionary y
z = dict([
(key, x.get(key, 0) + y.get(key, 0)) # key, sum(x,y)
for key in # for every key in
set(x.keys() + y.keys()) # the unique set of keys from x + y
])
步骤1:set(x.keys() + y.keys())
- 将两个键列表添加到一起并删除重复项(通过将其设置为一组)
步骤2:for key in
- 循环遍历步骤#1
步骤3:x.get(key, 0) + y.get(key, 0)
- 对每个词典中与该键相关联的值求和;如果没有关联值,则使用0作为默认值
步骤#4:(key, ...)
- 使用新的总和和原始密钥创建一个键值对
步骤#5:dict([...])
- 从键值对列表中创建一个新词典
这有意义吗?我希望有所帮助!