首页 > 解决方案 > 通过键合并两个 Python 字典的值

问题描述

我想通过它们的键合并两个字典的值。例子:

d1 = {'a':1, 'b':2, 'c':3}
d2 = {'a':2, 'b':[2,3], 'd':3}

所需的输出:

{'a': [1, 2], 'b': [2, 2, 3], 'c': [3], 'd': [3]}

到目前为止我所拥有的是

d12 = {}
for d in (d1, d2):
    for k,v in d.items(): 
        d12.setdefault(k, []).append(v)

产生

d12 = {'a': [1, 2], 'b': [2, [2, 3]], 'c': [3], 'd': [3]}

不需要的输出。

我在 SO 上进行了一些搜索,发现这篇文章只要没有抛出就可以回答我的问题TypeError: can only concatenate tuple (not "int") to tuple.

标签: pythonpython-3.xdictionary

解决方案


问题是您的值有时int是 s 有时list是 s。您必须检查数据类型,并append相应地检查extend

for k, v in d.items():
    if isinstance(v, list):
        d12.setdefault(k, []).extend(v)
    else:
        d12.setdefault(k, []).append(v)

推荐阅读