2014-12-02 103 views
0

我有一個包含字典的列表,他們每個人都有相同的密鑰和不同的價值觀,返回一個列表裏面的字典值的列表

我怎樣才能在列表中的每個字典的值的列表?

With dictionary.values()我可以得到一個字典的值列表,但如果它是在一個數組內?

是否有必要做一個for循環來獲取列表中的每個字典?

這就是我想要的東西:

list= [{'a':0,'b':1,'c':2}, {'a':3,'b':4,'c':5}, {'a':6,'b':2,'c':3},] 

all_values = [0,1,2,3,4,5,6] # THIS IS THE ACTUAL QUESTION 

values_of_a = [0,3,6] # THIS COULD BE BETTER IF POSSIBLE 

回答

4

可以使用list comprehensions兩個任務:

>>> array = [{'a':0,'b':1,'c':2}, {'a':3,'b':4,'c':5}, {'a':6,'b':2,'c':3},] 
>>> [y for x in array for y in x.values()] 
[0, 1, 2, 3, 4, 5, 6, 2, 3] 
>>> [x['a'] for x in array] # Assuming that all dicts have an 'a' key 
[0, 3, 6] 
>>> 

而且,array是不是技術上的數組。這是一個list。 Python中的數組是array.array的實例。

+0

你是完全正確的,它是一個列表,而不是一個數組,我將修改的問題,我認爲列表解析是最有效的方式,但難以理解,謝謝@iCodez – 2014-12-02 18:02:44

1

或者你可以使用lambda

>> b = map(lambda x: x.values(), a) 
>> reduce(lambda x, y: x+ y, b) 
>> [0, 2, 1, 3, 5, 4, 6, 3, 2] 
>> map(lambda x: x['a'], a) 
>> [0, 3, 6] 
0

您使用for循環:

all_values = [] 
for d in array: 
    all_values.extend(d.values()) 

values_of_a = [] 
for d in array: 
    values_of_a.append(d["a"]) 
相關問題