通过键合并两个 Python 字典的值

New*_*eAF 4 python dictionary python-3.x

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

d1 = {'a':1, 'b':2, 'c':3}
d2 = {'a':2, 'b':[2,3], 'd':3}
Run Code Online (Sandbox Code Playgroud)

所需的输出:

{'a': [1, 2], 'b': [2, 2, 3], 'c': [3], 'd': [3]}
Run Code Online (Sandbox Code Playgroud)

到目前为止我所拥有的是

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

产生

d12 = {'a': [1, 2], 'b': [2, [2, 3]], 'c': [3], 'd': [3]}
Run Code Online (Sandbox Code Playgroud)

不想要的输出。

我在 SO 上搜索了一下,发现这篇文章回答了我的问题,前提是它没有吐TypeError: can only concatenate tuple (not "int") to tuple.

Sel*_*cuk 8

问题是您的值有时int是 s,有时list是 s。你必须检查的数据类型,要么appendextend相应:

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