Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 按键合并字典,字典名称作为子键_Python_Dictionary_Nested - Fatal编程技术网

Python 按键合并字典,字典名称作为子键

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},

我正在寻找一种简短的python方法来按键合并两个(三个,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()} 

对见第一段的最后一句。为什么要使用“dic0”,“dic1”?甚至使用内部字典?为什么不使用一种更简单的表示法,比如:
combined_dict={'Amsterdam':[0,1],'Berlin':[5,7],'London':[7,8]}
,因为我想用正确的字段名将其打印到csv。为什么要否决?我的代码是完美的,人们喜欢不加解释的向下投票。不是我的向下投票,但可能人们不喜欢
eval
向下投票是在我添加它之前,但老实说,这是使用变量名作为字符串的唯一方法。我喜欢你的答案,我可以和你分享关于未注释的向下投票的悲伤。@MERose非常感谢。