如何计算列表中子列表的出现次数并将它们显示为dict
我有下一个列表:
lst = [["Orange", "Carrot"], ["Green", "Apple"], ["Yellow", "Banana"], ["Orange", "Pumpkin"], ["Green", "Apple"]]
我如何将它们显示为以下字典?:
dict_sum = {'Orange': {'Carrot': 1, 'Pumpkin': 1}, 'Green': {'Apple': 2}, 'Yellow': {'Banana': 1}}
回答
你可以使用一个defaultdict的计数器构建词典:
from collections import defaultdict, Counter
lst = [["Orange", "Carrot"], ["Green", "Apple"], ["Yellow", "Banana"], ["Orange", "Pumpkin"], ["Green", "Apple"]]
d = defaultdict(Counter)
for key, v in lst:
d[key][v] += 1
res = {k: dict(v) for k, v in d.items()}
print(res)
输出
{'Orange': {'Carrot': 1, 'Pumpkin': 1}, 'Green': {'Apple': 2}, 'Yellow': {'Banana': 1}}