Python 在两个不同的字典中添加与同一键关联的值
我已经看了这里的几个问题,但没有一个是我的问题。假设我有两本字典,它们是Python 在两个不同的字典中添加与同一键关联的值,python,dictionary,Python,Dictionary,我已经看了这里的几个问题,但没有一个是我的问题。假设我有两本字典,它们是dict1 {'A': 25 , 'B': 41, 'C': 32} 和dict2 {'D':21, 'A': 12, 'B':62} 我正在编写一个程序,需要在其中添加与同一个键相关的值。所以像这样: {'A': [25 + 12], 'B': [41 + 62], 'C': [32], 'D': [21]} x = {'a': 1, 'b': 1, 'c': 1} # dictionary
dict1
{'A': 25 , 'B': 41, 'C': 32}
和dict2
{'D':21, 'A': 12, 'B':62}
我正在编写一个程序,需要在其中添加与同一个键相关的值。所以像这样:
{'A': [25 + 12], 'B': [41 + 62], 'C': [32], 'D': [21]}
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
])
我假设你正在努力保存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]
这可能是实现这一点的最简单方法,我假设您正在努力保存dict_1作为结果
for key in dict_1:
if key in dict_2:
dict_1[key] = dict_1[key] + dict_2[key]
>>> 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]
需要复制存在于2中但不存在于1中的键值对
for key in dict_2:
if key not in dict_1:
dict_1[key] = dict_2[key]
这可能是最简单的方法
>>> 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]
现在你的口述变成了你想要的答案。希望有帮助。:)
现在你的口述变成了你想要的答案。希望有帮助。:) 我认为解决方案中缺少的是使用字典附带的
键
-方法和获取
-方法。keys
-方法将返回字典中键值对中所有键的列表。然而,get
-方法将返回与字典中某个键相关联的值(如果有),或者返回默认值(默认为None
)
要想做你想做的事,我推荐如下:
{'A': [25 + 12], 'B': [41 + 62], 'C': [32], 'D': [21]}
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步:用于输入键
-从第1步开始在集合中的每个键上循环
第三步:x.get(key,0)+y.get(key,0)
-对每个字典中与该键相关的值求和;如果没有关联的值,则使用0作为默认值
步骤4:(key,…)
-使用新的和和和原始键创建一个键、值对
第五步:dict([…])
-从键值对列表中创建一个新字典
这有意义吗?我希望这有帮助 我认为解决方案中缺少的是使用字典附带的
键
-方法和获取
-方法。keys
-方法将返回字典中键值对中所有键的列表。然而,get
-方法将返回与字典中某个键相关联的值(如果有),或者返回默认值(默认为None
)
要想做你想做的事,我推荐如下:
{'A': [25 + 12], 'B': [41 + 62], 'C': [32], 'D': [21]}
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步:用于输入键
-从第1步开始在集合中的每个键上循环
第三步:x.get(key,0)+y.get(key,0)
-对每个字典中与该键相关的值求和;如果没有关联的值,则使用0作为默认值
步骤4:(key,…)
-使用新的和和和原始键创建一个键、值对
第五步:dict([…])
-从键值对列表中创建一个新字典
这有意义吗?我希望这有帮助 你的问题是什么?只需在其中一个dict的键上循环,并添加两个dict的相应元素。你的问题是什么?只需在其中一个dict的键上循环,并添加两个dict的相应元素。