从词典列表中提取

时间:2017-02-02 06:40:40

标签: python

我有一个词典列表。 列表中每个字典中的键都有另一个字典作为值。

[{'A':{'AX':'','source':'rock'}},
{'B':{'BX':'','source':'paper'}},
{'C':{'CX':'','source':'scissors'}}]

我需要列出来源'的值。键入列表中的所有子词典(如果可能的话,单行) - 作为一组。 预期产出:

['rock','paper','scissors']  

请协助。

3 个答案:

答案 0 :(得分:3)

您可以使用嵌套列表理解表达式来实现它:

my_list = [{'A':{'AX':'','source':'rock'}},
           {'B':{'BX':'','source':'paper'}},
           {'C':{'CX':'','source':'scissors'}}]

my_values = [v['source'] for l in my_list for v in l.values()]

my_values保留的值为:

['rock', 'paper', 'scissors']

如果您想获得唯一元素(如果有可能存在重复值),则必须将my_values键入@ set

set(my_values)

答案 1 :(得分:0)

您可以使用嵌套迭代:

original_list = [{'A':{'AX':'','source':'rock'}},
                 {'B':{'BX':'','source':'paper'}},
                 {'C':{'CX':'','source':'scissors'}}]
output = []
for item in original_list:
    for k, v in item.iteritems():
        output.append(v['source'])

答案 2 :(得分:0)

如果dlist是您的词典列表,那么:

values = set([list(d.values())[0]['source'] for d in dlist])

此外,如果您不关心改变词典,您也可以这样做:

values = set([d.popitem()[1]['source'] for d in dlist])