2017-02-02 7 views
0

私は辞書のリストを持っています。 リスト内の各辞書のキーには、値として別の辞書があります。辞書一覧から抽出する

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

私は、リスト内のすべての子辞書で「ソース」キー(ワンライナー可能な場合)の値をリストする必要があるだろう - セットとして。 予想される出力:

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

支援してください。

答えて

0

を:また

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

、あなたは辞書を変異気にしないならば、あなたがすることもできますこれを行う:

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

あなたにネストされたリストの内包表現を使用して経由して、それを達成することができる:

my_valuesによって値ホールドがなる
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()] 

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

あなたがた場合のユニークな要素を(取得したい場合重複の可能性があります)、my_valuessetを次のようにタイプキャストしなければなりません:

set(my_values) 
あなたは、ネストされた回の反復使用することができ
0

dlistは、その後、辞書のリストである場合

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']) 
関連する問題