从对象列表中某个字段的值生成列表

2024-06-26 03:10:07 发布

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

如何生成列表中某个对象字段的值列表?你知道吗

给定对象列表:

[ {name: "Joe", group: 1}, {name: "Kirk", group: 2}, {name: "Bob", group: 1}]

我要生成名称字段值的列表:

["Joe", "Kirk", "Bob"]

内置的filter()函数看起来很接近,但它将返回整个对象本身。你知道吗

我想要一个干净的单线解决方案,例如:

filterLikeFunc(function(obj){return obj.name}, mylist)

对不起,我知道这是c语法。你知道吗


Tags: 对象函数name名称obj列表group解决方案
3条回答

使用列表理解方法,您可以得到:

objects = [{'group': 1, 'name': 'Joe'}, {'group': 2, 'name': 'Kirk'}, {'group': 1, 'name': 'Bob'}]
names = [i["name"] for i in objects]

有关列出理解的好介绍,请参见https://docs.python.org/2/tutorial/datastructures.html

只需将filter内置函数替换为map内置函数。你知道吗

并使用get函数来获取name键的值,该函数在没有特定键的情况下不会给出键错误。你知道吗

data = [{'name': "Joe", 'group': 1}, {'name': "Kirk", 'group': 2}, {'name': "Bob", 'group': 1}]

print map(lambda x: x.get('name'), data)

在Python3.x中

print(list(map(lambda x: x.get('name'), data)))

结果:

['Joe', 'Kirk', 'Bob']

使用List Comprehension

print [each.get('name') for each in data]

只需遍历dict列表,选择name值并将它们放入列表中。你知道吗

x = [ {'name': "Joe", 'group': 1}, {'name': "Kirk", 'group': 2}, {'name': "Bob", 'group': 1}]

y = [y['name'] for y in x]

print(y)

相关问题 更多 >