从字典列表中获取值列表
我有一个字典列表,长得像这样:
[{'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]