我有那一系列的字典:
[{'dog': 'dog-1'}, {'monkey': 'monkey-1'}, {'buffalo': 'buffalo-6'}, {'dog': 'dog-2'},{'pig': 'pig-3'}, {'monkey': 'monkey-6'}, {'monkey': 'monkey-6'}]
我需要將每個擁有相同密鑰的人放在同一個字典中。我需要那個結果:
[{'dog': ['dog-1', 'dog-2']}, {'monkey': ['monkey-1', 'monkey-6', 'monkey-6']}, {'buffalo': ['buffalo-6']}, {'pig': ['pig-3']}]
uj5u.com熱心網友回復:
使用defaultdict:
from collections import defaultdict
lst = [{'dog': 'dog-1'}, {'monkey': 'monkey-1'}, {'buffalo': 'buffalo-6'}, {'dog': 'dog-2'},{'pig': 'pig-3'}, {'monkey': 'monkey-6'}, {'monkey': 'monkey-6'}]
output = defaultdict(list)
for d in lst:
for k,v in d.items():
output[k].append(v)
uj5u.com熱心網友回復:
一般的想法是,當您遍歷串列時,您想知道您是否已經到達了一個您以前已經看過其鍵的字典。如果您已經看到該鍵,那么您希望將其值附加到匹配鍵的值;如果沒有,您想創建一個具有默認值的新鍵(在本例中為空串列)。你可以用它dict.setdefault來做到這一點。
out = {}
for d in lst:
for k, v in d.items():
out.setdefault(k, {}).setdefault(k, []).append(v)
out = list(out.values())
輸出:
[{'dog': ['dog-1', 'dog-2']},
{'monkey': ['monkey-1', 'monkey-6', 'monkey-6']},
{'buffalo': ['buffalo-6']},
{'pig': ['pig-3']}]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/410023.html
標籤:
