2015-05-31 70 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字典列表獲取的值的列表(
相關問題