我有一个词典列表。 列表中每个字典中的键都有另一个字典作为值。
[{'A':{'AX':'','source':'rock'}},
{'B':{'BX':'','source':'paper'}},
{'C':{'CX':'','source':'scissors'}}]
我需要列出来源'的值。键入列表中的所有子词典(如果可能的话,单行) - 作为一组。 预期产出:
['rock','paper','scissors']
请协助。
答案 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])