从dict列表中获取值列表

2024-04-18 07:13:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个这样的口述清单:

[{'value': 'apple', 'blah': 2}, 
 {'value': 'banana', 'blah': 3} , 
 {'value': 'cars', 'blah': 4}]

我要['apple', 'banana', 'cars']

最好的方法是什么?


Tags: 方法applevaluecarsbananablah口述
3条回答

假设每个dict都有一个value键,您就可以编写(假设您的列表名为l

[d['value'] for d in l]

如果value可能丢失,可以使用

[d['value'] for d in l if 'value' in d]

下面是使用map()和lambda函数的另一种方法:

>>> map(lambda d: d['value'], l)

我是名单上的人。 我认为这种方式“最性感”,但我会用列表理解。

更新: 如果“value”可能作为密钥使用丢失:

>>> map(lambda d: d.get('value', 'default value'), l)

更新:我也不是兰巴斯的忠实粉丝,我更喜欢点名。。。我就是这么想的:

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

[x['value'] for x in list_of_dicts]

相关问题 更多 >