こんな感じのディクショナリー一覧です。
[{'value': 'apple', 'blah': 2},
{'value': 'banana', 'blah': 3} ,
{'value': 'cars', 'blah': 4}]
私は ['apple', 'banana', 'cars']
が欲しいのです。
どうすればいいのでしょうか?
ここでは、map()とラムダ関数を使った別の方法を紹介します。
>>> map(lambda d: d['value'], l)
ここで、lはリストです。 私はこの方法が一番セクシーだと思いますが、私ならリスト内包を使ってやります。
更新しました。 '値'がキー使用として欠落している可能性があるため。
>>> map(lambda d: d.get('value', 'default value'), l)
Update: 私もラムダはあまり好きではなく、名前をつけるのが好きなので...その点を考慮してこのような形にしました。
>>> import operator
>>> map(operator.itemgetter('value'), l)
さらに進んで、何を実現したいかを明示した単独の関数を作ることもあります。
>>> import operator, functools
>>> get_values = functools.partial(map, operator.itemgetter('value'))
>>> get_values(l)
... [<list of values>]
Python 3 では、map
はイテレータを返すので、list
を使って、例えば list(map(operator.itemgetter('value'), l))
のようにリストを返します。