2016-04-15 7 views
0

Auf der Suche nach einem effizienten Python-Code, um die folgende Funktionalität zu erreichen.Wie ändert man den Schlüssel und den Wert in einer Liste von dict in Python?

input_dir =[{'NAME': 'ABC', 'VALUE': 'USA'}, {'NAME': 'PQR', 'VALUE': 'EU'}] 
expected_output= {'ABC': 'USA', 'PQR': 'EU'} 

und ich verwende den folgenden Code.

out_key = '' 
out_value = '' 
output_dictionary = {} 
for index, item in enumerate(input_dir): 
    for key in item: 
      if key == 'NAME': 
       out_key = item[key] 
      elif key == 'VALUE': 
       out_value = item[key] 
    output_dictionary[out_key] = out_value 
print(output_dictionary) 

Gibt es einen effizienten Weg, dies zu tun? Irgendwelche Vorschläge!

Antwort

3

Eigentlich nur ein Liner. Führen Sie ein Wörterbuchverständnis wie folgt durch.

In [209]: {d["NAME"]:d["VALUE"] for d in input_dir} 
Out[209]: {'ABC': 'USA', 'PQR': 'EU'} 
+0

Perfekt !! wirklich einfache Lösung im Vergleich zu meinem langen Code! Vielen Dank. @C Panda – Pradeep

1

Ich habe noch nicht getestet, um den folgenden Code auf einem Computer, aber Sie sollten mit einer Lambda-Funktion und Iterieren über die Eingabe Wörterbuch reduzieren Ihren Code in der Lage sein:

f = lambda x: (x['NAME'], x['VALUE']) 
output_dictionary = dict(f(i) for i in input_dir) 

Hoffnung, das hilft.

+0

Ah sieht es aus wie C Panda schlug mich bis zum Schlag ... –

+0

Yup .. Das funktioniert auch .. danke! @Licht – Pradeep

Verwandte Themen