2024-04-18 07:13:26 发布
网友
我有一个这样的口述清单:
[{'value': 'apple', 'blah': 2}, {'value': 'banana', 'blah': 3} , {'value': 'cars', 'blah': 4}]
我要['apple', 'banana', 'cars']
['apple', 'banana', 'cars']
最好的方法是什么?
假设每个dict都有一个value键,您就可以编写(假设您的列表名为l)
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))。
map
list
list(map(operator.itemgetter('value'), l))
[x['value'] for x in list_of_dicts]
假设每个dict都有一个
value
键,您就可以编写(假设您的列表名为l
)如果
value
可能丢失,可以使用下面是使用map()和lambda函数的另一种方法:
我是名单上的人。 我认为这种方式“最性感”,但我会用列表理解。
更新: 如果“value”可能作为密钥使用丢失:
更新:我也不是兰巴斯的忠实粉丝,我更喜欢点名。。。我就是这么想的:
我甚至会更进一步,创建一个唯一的函数,明确地说明我想要实现的目标:
对于Python 3,由于
map
返回迭代器,因此使用list
返回列表,例如list(map(operator.itemgetter('value'), l))
。相关问题 更多 >
编程相关推荐