我想寫一個字典理解。協助與詞典理解
我有這樣一個字典:
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)
但這只是一個例子)
我想用一個字典,理解到執行邏輯,所以到目前爲止,我有以下幾點:
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找到的最後一個實例...
我迷失如何正確執行這種嵌套的列表理解。我嘗試了多種變化,比最後一次更糟糕。
爲清楚起見,你能告訴我們你希望你的例子輸入輸出? –
你確定把所有這些邏輯都用在詞典理解中是個好主意嗎?有時可讀性比幾行代碼更好。 – pemistahl
@PeterStahl很顯然你以前沒有 –