2015-05-31 31 views
0

如何生成列表中某个对象字段值的列表?根据对象列表中某些字段的值生成列表

考虑的对象列表:

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

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

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

内置filter()功能似乎接近,但它会返回整个对象本身。

我想要一个干净,一个在线解决方案,如:

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

对不起,我知道这是C语法。

+2

可能重复http://stackoverflow.com/questions/25040875/get-a-list-of-values-from-a- Python中的字典列表) – vaultah

+0

我没有使用字典,但是我会看看我是否可以调整Q的答案。 – LazerSharks

+1

单行..“列表理解”的好用例 –

回答

1

USI NG列表理解的方法你:

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

+0

如果您是一位经验丰富的程序员,可能会喜欢Python入门书(www.diveintopython.net)。 –

1

只需用map内置函数替换filter内置函数。

并使用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'] 

使用List Comprehension

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

只是遍历你的类型的字典列表,并挑选出name值,并把它们在列表中。

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

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

print(y) 
的[从在python字典列表获取的值的列表(
相关问题