从字典列表中获取值列表

317 投票
10 回答
436395 浏览
提问于 2025-04-17 01:05

我有一个字典列表,长得像这样:

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

我想要 ['apple', 'banana', 'cars'] 这个结果。

有什么好的方法可以做到这一点吗?

10 个回答

26

这段代码是用来做一些特定操作的。它可能涉及到一些编程语言的基本语法和结构,但具体的功能和用途需要根据上下文来理解。

如果你对这段代码有疑问,可以尝试逐行分析,看看每一行在做什么,或者查阅相关的编程资料来加深理解。

记得多动手实践,写代码是学习编程最有效的方法之一!

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

这里有另一种方法,可以使用map()和lambda函数来实现:

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

其中l是一个列表。我觉得这种方式“最酷”,但我更喜欢用列表推导式来做。

更新:如果'值'这个键可能会缺失,可以使用:

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

更新:我其实也不是很喜欢用lambda函数,我更喜欢给东西命名……这是我考虑到这一点后会怎么做:

>>> import operator
>>> get_value = operator.itemgetter('value')
>>> map(get_value, l)

我甚至会更进一步,创建一个单独的函数,明确说明我想要实现的目标:

>>> import operator, functools
>>> get_value = operator.itemgetter('value')
>>> get_values = functools.partial(map, get_value)
>>> get_values(l)
... [<list of values>]

在Python 3中,由于map返回的是一个迭代器,所以要用list来返回一个列表,比如说list(map(operator.itemgetter('value'), l))

529

假设每个字典都有一个叫做 value 的键,你可以这样写(假设你的列表叫 l

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

如果 value 可能会缺失,你可以使用

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

撰写回答