如何生成列表中某个对象字段的值列表?
给出对象列表:
[ {name: "Joe", group: 1}, {name: "Kirk", group: 2}, {name: "Bob", group: 1}]
我想生成名称字段值的列表:
["Joe", "Kirk", "Bob"]
内置的filter()
函数似乎已接近,但它将返回整个对象本身。
我想要一个简洁的一线解决方案,例如:
filterLikeFunc(function(obj){return obj.name}, mylist)
抱歉,我知道这是一种语法。
答案 0 :(得分:1)
并使用get函数,在没有该特定键的情况下不会为您提供密钥错误,以获取name
密钥的值。
data = [{'name': "Joe", 'group': 1}, {'name': "Kirk", 'group': 2}, {'name': "Bob", 'group': 1}]
print map(lambda x: x.get('name'), data)
在Python 3.x
中print(list(map(lambda x: x.get('name'), data)))
结果:
['Joe', 'Kirk', 'Bob']
print [each.get('name') for each in data]
答案 1 :(得分:1)
使用列表理解方法:
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
答案 2 :(得分:1)
只需遍历您的dicts列表并选择x = [ {'name': "Joe", 'group': 1}, {'name': "Kirk", 'group': 2}, {'name': "Bob", 'group': 1}]
y = [y['name'] for y in x]
print(y)
值并将其放入列表中。
$date = $interval1->format('%y years %m months and %d days %H hours, %i min and %s sec ');
$replaced = false;
while ($replaced)
{
$date = preg_replace('/^(0 [a-z]+)/', '', ltrim($date, " ,and"), 1, $replaced);
}