Python 按键合并字典,字典名称作为子键
我正在寻找一种简短的python方法来按键合并两个(三个,n)词典。关于合并或附加字典有几个问题,但这里我想在它们的键相等时将一个值附加到另一个值。我所有的字典都有完全相同的一组键Python 按键合并字典,字典名称作为子键,python,dictionary,nested,Python,Dictionary,Nested,我正在寻找一种简短的python方法来按键合并两个(三个,n)词典。关于合并或附加字典有几个问题,但这里我想在它们的键相等时将一个值附加到另一个值。我所有的字典都有完全相同的一组键 dic0 = {'Amsterdam': 0, 'Berlin': 5, 'London': 7} dic1 = {'Amsterdam': 1, 'Berlin': 7, 'London': 8} 期望输出: combined_dict = {'Amsterdam': {'dic0': 0, 'dic1':1},
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()}
对见第一段的最后一句。为什么要使用“dic0”,“dic1”?甚至使用内部字典?为什么不使用一种更简单的表示法,比如:
combined_dict={'Amsterdam':[0,1],'Berlin':[5,7],'London':[7,8]}
,因为我想用正确的字段名将其打印到csv。为什么要否决?我的代码是完美的,人们喜欢不加解释的向下投票。不是我的向下投票,但可能人们不喜欢eval
向下投票是在我添加它之前,但老实说,这是使用变量名作为字符串的唯一方法。我喜欢你的答案,我可以和你分享关于未注释的向下投票的悲伤。@MERose非常感谢。