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>]