Ich habe eine Liste von Diktaten dieser Art:
[{'value': 'apple', 'blah': 2},
{'value': 'banana', 'blah': 3} ,
{'value': 'cars', 'blah': 4}]
Ich möchte ['Apfel', 'Banane', 'Autos']
Wie kann ich das am besten machen?
Unter der Annahme, dass jedes Diktat einen "Wert"-Schlüssel hat, können Sie schreiben (vorausgesetzt, Ihre Liste heißt "l")
[d['value'] for d in l]
Wenn Wert
fehlen könnte, können Sie verwenden
[d['value'] for d in l if 'value' in d]
Hier ist eine weitere Möglichkeit, dies mit map() und Lambda-Funktionen zu tun:
>>> map(lambda d: d['value'], l)
wobei l die Liste ist. Ich sehe diesen Weg "sexiest", aber ich würde es mit der Liste Verständnis zu tun.
Aktualisieren: Für den Fall, dass 'value' als Schlüssel fehlen könnte, verwenden Sie:
>>> map(lambda d: d.get('value', 'default value'), l)
Update: Ich bin auch kein großer Fan von Lambdas, ich bevorzuge es, Dinge zu benennen... so würde ich es in diesem Sinne machen:
>>> import operator
>>> map(operator.itemgetter('value'), l)
Ich würde sogar noch weiter gehen und eine einzige Funktion erstellen, die explizit sagt, was ich erreichen will:
>>> import operator, functools
>>> get_values = functools.partial(map, operator.itemgetter('value'))
>>> get_values(l)
... [<list of values>]
Mit Python 3, da map
einen Iterator zurückgibt, verwenden Sie list
um eine Liste zurückzugeben, z.B. list(map(operator.itemgetter('value'), l))
.
[x['value'] for x in list_of_dicts]