2014-12-02 89 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"]) 
相关问题