通过键合并两个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.

回答

问题是您的值有时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)


以上是通过键合并两个Python字典的值的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>