按键将字典合并为字典名称作为子键

时间:2015-04-25 17:37:31

标签: python dictionary nested

我正在寻找一种简短的pythonic方式来按键合并两个(三个,n个)词典。关于合并或附加词典有几个问题,但在这里我正在寻找在其键相等时将值附加到另一个值。我的所有词典都有完全相同的键集。

dic0 = {'Amsterdam': 0, 'Berlin': 5, 'London': 7}
dic1 = {'Amsterdam': 1, 'Berlin': 7, 'London': 8}

期望的输出:

combined_dict = {'Amsterdam': {'dic0': 0, 'dic1':1}, 'Berlin': {'dic0': 5, 'dic1':7}, 'London': {'dic0': 7, 'dic1':8}}

我可以用

实现这一目标
combined_dict = {}
for key in dic0.keys():
    combined_dict[key] = {}
    combined_dict[key]['dic0'] = dic0[key]
    combined_dict[key]['dic1'] = dic1[key]

但这似乎远非易于扩展。作为第一步,我甚至没有得到词典的名称。

1 个答案:

答案 0 :(得分:1)

这适用于字典名称列表,例如dicts = ['dic0', 'dic1']

combo = {k: {i: eval(i)[k] for i in dicts} for k in eval(dicts[0]).keys()}