How to concatenate dicts in Python
我有以下口述:
1 2 3 4 5 6 7 8 9 10 11 | one: { 'param': { 'a': 1 } } one: { 'param': { 'b': 1 } } |
我想将两者结合起来创建
1 2 3 4 5 6 | one: { 'param': { 'a': 1, 'b': 2 } } |
这有可能吗?
使用收款模块中的
1 2 3 4 5 6 | from collections import ChainMap ... d1 = dict(...) d2 = dict(...) chainmap1 = ChainMap(d1,d2) |
您可以尝试以下操作:
1 2 3 | d1 = {'param': {'a': 1}} d2 = {'param': {'b': 1}} d1['param'].update(d2['param']) |
输出:
1 | {'param': {'b': 1, 'a': 1}} |
或者,对于更通用的解决方案:
1 2 3 4 | def get_dict(d1, d2): return {a: dict(c.items()+d.items()) if all(not isinstance(h, dict) for _, h in c.items()) and all(not isinstance(h, dict) for _, h in d.items()) else get_dict(c, d) for (a, c), (_, d) in zip(d1.items(), d2.items())} print(get_dict({'param': {'a': 1}}, {'param': {'b': 1}})) |
输出:
1 | {'param': {'a': 1, 'b': 1}} |
这个解决方案将创建一个保存旧字典的新字典:
在您的特定情况下:
1 | three = {'param': dict(one['param'].items() + two['param'].items())} |
这是一条路。您需要python 3.5+。
1 2 3 4 5 6 | one = {'param': {'a': 1}} two = {'param': {'b': 1}} three = {'param': {**one['param'], **two['param']}} # {'param': {'a': 1, 'b': 1}} |