2016-04-10 27 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}