以字典名称作为子键按键合并字典
Merge dictionaries by key with dictionary names as subkeys
我正在寻找一种简短的 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]
但这似乎很难扩展。作为第一步,我什至连字典的名字都没有得到。
这适用于字典名称列表,例如 dicts = ['dic0', 'dic1']
:
combo = {k: {i: eval(i)[k] for i in dicts} for k in eval(dicts[0]).keys()}
我正在寻找一种简短的 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]
但这似乎很难扩展。作为第一步,我什至连字典的名字都没有得到。
这适用于字典名称列表,例如 dicts = ['dic0', 'dic1']
:
combo = {k: {i: eval(i)[k] for i in dicts} for k in eval(dicts[0]).keys()}