2017-02-02 21 views
2

私は辞書を持っています - 値は辞書そのものです。
子辞書から一意の値セットを最も効率的に抽出するにはどうすればよいですか?辞書の処理辞書

{ 'A':{'A1':'A1V','B2':'A2V'..}, 
    'B':{'B1':'B1V','B2':'B2V'...}, 
    ...} 

予想される出力:

['A1V','A2V','B1V','B2V'...] 

答えて

5

あなたは、セット理解して、リスト-理解を交換するような場合には、ユニークな言及:

>>> {val for dct in x.values() for val in dct.values()} # curly braces! 
{'A1V', 'A2V', 'B1V', 'B2V'} 
0
uniques = set() 
for ukey, uvalue in outerdic.items(): 
    for lkey, lvalue in uvalue.items(): 
     uniques.add(lvalue) 
print uniques 

動作するはずのセットを使用します。構文の強調表示の仕組みを理解しようとすると、stackoverflowが新しくなりました。

これは、辞書が「outerdic」であることを前提としています。

0
dictionary = { 'A':{'A1':'A1V','B2':'A2V'},'B':{'B1':'B1V','B2':'B2V'}} 

for key in dictionary.keys() : 
    dict1 = dictionary[key] 
    for key1 in dict1.keys(): 
     print(dict1[key1]) 

できるだけシンプルにしてください。あなたは辞書xのあなたの辞書の名前と仮定

>>> [val for dct in x.values() for val in dct.values()] 
['A1V', 'A2V', 'B2V', 'B1V'] 

:単一行で