2016-04-10 30 views
1

如何将下列字典数组结构转换为只有一行的'city': 'continent'结构的字典?在一行中连接字典数组

info = [ 
    ({'Amsterdam':10,'Berlin':20,'London':30},'Europe'), 
    ({'Hongkong':10,'Beijng':20,'Manila':30},'Asia'), 
    ({'Nairobi':10,'Cape Town':20,'Cairo':30},'Africa') 
] 

此代码给了我答案:

a = dict() 
for t in info: 
    for i in t[0]: 
     a[i]=t[1] 

{'Amsterdam': 'Europe', 
'Beijng': 'Asia', 
'Berlin': 'Europe', 
'Cairo': 'Africa', 
'Cape Town': 'Africa', 
'Hongkong': 'Asia', 
'London': 'Europe', 
'Manila': 'Asia', 
'Nairobi': 'Africa'} 

这是不正确的:

a = {i:t[1] for i in t[0] for t in info} 

而另一种尝试,来连接字典的数组,也将失败:

a = dict([{i:t[1] for i in t[0]} for t in info]) 
+0

您使用的是什么版本的Python? –

+0

我正在使用Python 3(请参阅标签) – API

+0

谢谢,但Python 3指向了什么?我问的原因是,Python 3.5添加了一种连接字典的新方法('{** x,** y}')。 –

回答

1

试试这个(测试编辑于3.5):

a = {i: y for x, y in info for i in x}