python从dict列表中获取值的列表
我有一个这样的字典列表:
[{'value': 'apple', 'blah': 2}, {'value': 'banana', 'blah': 3} , {'value': 'cars', 'blah':4}]
我想要['apple', 'banana', 'cars']
最好的办法是做到这一点?
假设每个字典都有一个value
键,你可以写(假设你的列表被命名为l
)
[d['value'] for d in l]
如果value
可能丢失,您可以使用
[d['value'] for d in l if 'value' in d]
[x['value'] for x in list_of_dicts]
下面是使用map()和lambda函数的另一种方法:
>>> map(lambda d: d['value'], l)
其中l是列表。 我看到这种方式“最性感”,但我会用列表理解。
更新:如果“价值”可能作为一个关键用途丢失:
>>> map(lambda d: d.get('value', 'default value'), l)
更新:我也不是一个lambda的大粉丝,我更喜欢命名的东西…这是我将如何做到这一点:
>>> import operator >>> map(operator.itemgetter('value'), l)
我甚至会进一步创build一个唯一的function,明确说明我想实现的目标:
>>> import operator, functools >>> get_values = functools.partial(map, operator.itemgetter('value')) >>> get_values(l) ... [<list of values>]