首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何选择/添加两个或更多的Python字典?

如何选择/添加两个或更多的Python字典?
EN

Stack Overflow用户
提问于 2018-08-18 05:40:49
回答 2查看 197关注 0票数 -2

假设我有两个python字典:

代码语言:javascript
复制
dct_01 = {'a': 1, 'b': 2, 'c': 3}
dct_02 = {'a': 2, 'b': 1, 'c': 3, 'd': 4}

我想要:

代码语言:javascript
复制
dct_03 = {'a': 3, 'b': 3, 'c': 3, 'd': 4}

如果两个字典有相同的键->值对,它应该保持不变,如果有不同值的相同键,它应该相加。

我该怎么做呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-18 08:46:07

代码语言:javascript
复制
m = {}
for i in dct_01.keys()|dct_02.keys():
   v1 = dct_01.get(i)
   v2 = dct_02.get(i)
   if v1==v2: m[i] = v1
   elif v1 is None: m[i] = v2
   elif v2 is None: m[i] = v1
   else: m[i] = v1+v2

m
{'d': 4, 'c': 3, 'a': 3, 'b': 3}
票数 0
EN

Stack Overflow用户

发布于 2018-08-18 09:05:40

您可以将字典理解与自定义函数一起使用。我们通过set(dct_01) | set(dct_02)计算字典键的联合,并迭代它们。

代码语言:javascript
复制
dct_01 = {'a': 1, 'b': 2, 'c': 3}
dct_02 = {'a': 2, 'b': 1, 'c': 3, 'd': 4}

def calc_val(d1, d2, k):
    val1 = d1.get(k, 0)
    val2 = d2.get(k, 0)
    if val1 == val2:
        return val1
    return val1 + val2

res = {k: calc_val(dct_01, dct_02, k) for k in set(dct_01) | set(dct_02)}

print(res)

{'b': 3, 'a': 3, 'c': 3, 'd': 4}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51903204

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档