2017-06-15 16 views
1
G2 = {'a': {'c': 1, 'b': 1}, 'b': {'a': 1, 'c': 1}} 

b = G2.values() 

for i in b: 
    for key, value in i.items(): 
     list.append(key) 

#result: ['c', 'b', 'a', 'c'] 

リストジェネレータを使用しても同じ結果が得られますか? 私はこのようにそれを試してみました:辞書の辞書を1行繰り返します

list2 = [key for key, value in i.items() for i in b] 

#but i get: ['a', 'a', 'c', 'c'] 

答えて

4

だけitertools.chain.from_iterableを使用して、辞書の値(別名キー)チェーン、および結果を印刷するリストに変換する:

import itertools 

G2 = {'a': {'c': 1, 'b': 1}, 'b': {'a': 1, 'c': 1}} 

#['c', 'b', 'a', 'c'] 

result = list(itertools.chain.from_iterable(G2.values())) 

print(result) 

結果:

['c', 'b', 'c', 'a'] 

辞書キーを繰り返している間は、順序が保証されていないことに注意してください。 (おそらくあなたの試みに近い)理解の内側の二重ループを平坦化してitertoolsを使用せずに

バリアント:

result = [x for values in G2.values() for x in values] 
+0

素晴らしいです!ありがとうございました –

関連する問題