私は辞書の理解を書こうとしています。
私はこのような辞書を持っています:
main_dict = {
'A' : {'key1' : 'valueA1', 'key2' : 'valueA2'},
'B' : {'key2' : 'valueB2', 'key3' : 'valueB3'},
'C' : {'key3' : 'valueC3', 'key1' : 'valueC1'}}
次のロジックを実行したい:
d = {}
for k_outer, v_outer in main_dict.items():
for k_inner, v_inner in v_outer.items():
if k_inner in d.keys():
d[k_inner].append([k_outer, v_inner])
else:
d[k_inner] = [[k_outer, v_inner]]
次の結果が得られます。
{'key3': [['C', 'valueC3'], ['B', 'valueB3']],
'key2': [['A', 'valueA2'], ['B', 'valueB2']],
'key1': [['A', 'valueA1'], ['C', 'valueC1']]}
(使用できることはわかっていますdefaultdict(list)
が、これは単なる例です)
dict-comprehension を使用してロジックを実行したいのですが、これまでのところ次のようになっています。
d = {k : [m, v] for m, x in main_dict.items() for k, v in x.items()}
これは機能しません。次の出力しか得られません。
{'key3' : ['B', 'valueB3'],
'key2' : ['B', 'valueB2'],
'key1' : ['C', 'valueC1']}
各 inner_key で見つかった最後のインスタンスはどれですか...
このネストされたリスト内包表記を正しく実行する方法がわかりません。複数のバリエーションを試しましたが、すべて前回よりも悪いものでした。