合并任意数量的列表字典

sha*_*iya 4 python merge dictionary list

如何将值为列表的字典合并到Python中,以便将所有键移动到一个字典中,并将每个列表的所有元素移动到每个键的单个列表中?

例如,使用这些词典:

x = {'a': [2], 'b': [2]}
y = {'b': [11], 'c': [11]}
Run Code Online (Sandbox Code Playgroud)

......合并的结果应该是这样的:

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

怎么可以用任意数量的词典来完成,而不仅仅是两个?

Tan*_*lam 5

您可以使用以下方法,它使用setsdict comprehension

x = {'a': [2], 'b': [2]} 
y = {'b': [11], 'c': [11]}

all_keys = set(x) | set(y)

print {k:x.get(k, [])+y.get(k, []) for k in all_keys}
Run Code Online (Sandbox Code Playgroud)

结果:

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


Dan*_*man 5

for k, v in y.items():
    x.setdefault(k, []).extend(v)
Run Code Online (Sandbox Code Playgroud)