Tengo una lista de dictos así:
[{'value': 'apple', 'blah': 2},
{'value': 'banana', 'blah': 3} ,
{'value': 'cars', 'blah': 4}]
Quiero ['manzana', 'plátano', 'coches']
.
¿Cuál es la mejor manera de hacerlo?
He aquí otra forma de hacerlo utilizando map() y funciones lambda:
>>> map(lambda d: d['value'], l)
donde l es la lista. Veo esta forma "más sexy", pero yo lo haría utilizando la comprensión de la lista.
Actualización: En caso de que 'valor' pudiera faltar como clave uso:
>>> map(lambda d: d.get('value', 'default value'), l)
Actualización: Yo tampoco soy muy fan de las lambdas, prefiero nombrar las cosas... así es como lo haría yo teniendo eso en cuenta:
>>> import operator
>>> map(operator.itemgetter('value'), l)
Incluso iría más allá y crearía una única función que dijera explícitamente lo que quiero conseguir:
>>> import operator, functools
>>> get_values = functools.partial(map, operator.itemgetter('value'))
>>> get_values(l)
... [<list of values>]
Con Python 3, como map
devuelve un iterador, usa list
para devolver una lista, por ejemplo list(map(operator.itemgetter('value'), l))
.