2015-07-27 32 views
5

Şöyle sözlükler dizisini var:python eş anlamlı sözlük sözlüktür?

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

Ve böyle bir sözlüğe ile bitirmek istiyorum:

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

Açıkçası ben bunu yapabilirsiniz:

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

Tek bir harita ile yapabilmem için herhangi bir yol var mı?

cevap

9

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

Ya bize operator.itemgetter ve map fonksiyonu:

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