2016-04-10 13 views
1

Wie kann ich die folgende Dictionaries-in-Array-Struktur in ein Dictionary mit 'city': 'continent' Struktur mit nur einer Zeile umwandeln?Array von Wörterbüchern in einer Zeile verketten

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

Dieser Code gibt mir die Antwort:

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

Dies ist falsch:

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

Und einen weiteren Versuch, eine Reihe von Wörterbüchern verketten, versagt auch:

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

Welche Version von Python verwenden Sie? –

+0

Ich benutze Python 3 (siehe das Tag) – API

+0

Danke, aber Python 3 Punkt was? Der Grund, warum ich frage, ist, dass Python 3.5 eine neue Art hinzugefügt hat, Wörterbücher zu verbinden ('{** x, ** y}'). –

Antwort

1

versuchen Sie dies (Test ed on 3.5):

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