2015-07-27 1 views
5

Ich habe eine Reihe von Wörterbüchern bekam die wie folgt aussieht:Python Karte Array von Wörterbüchern zu Wörterbuch?

[ 
    { 'country': 'UK', 'city': 'Manchester' }, 
    { 'country': 'UK', 'city': 'Liverpool' }, 
    { 'country': 'France', 'city': 'Paris' } ... 
] 

Und ich möchte am Ende mit einem Wörterbuch wie folgt aus:

{ 'Liverpool': 'UK', 'Manchester': 'UK', ... } 

Offensichtlich kann ich tun:

d = {} 
for c in cities: 
    d[c['city']] = c['country'] 

Aber kann ich es irgendwie mit einer einzeiligen Karte machen?

Antwort

9

können Sie verwenden ein dict comprehension:

>>> li = [ 
... { 'country': 'UK', 'city': 'Manchester' }, 
... { 'country': 'UK', 'city': 'Liverpool' }, 
... { 'country': 'France', 'city': 'Paris' } 
... ] 

>>> {d['city']: d['country'] for d in li} 
{'Paris': 'France', 'Liverpool': 'UK', 'Manchester': 'UK'} 

Oder uns operator.itemgetter und map Funktion:

>>> dict(map(operator.itemgetter('city','country'),li)) 
{'Paris': 'France', 'Liverpool': 'UK', 'Manchester': 'UK'}