我想知道是否有更好的解决方案来像这样对dict中的项目进行计数:
D={('a','b','c'):4,('b','c'):2}
dict键是项的元组,值是元组的出现。如何计算项目的发生。像func(D)
这样的示例应返回{'a':4,'b':6,'c':6}
。
基准解决方案:
from collections import Counter
def func(D):
f=lambda item:list(item[0])*item[1]
L=[]
for item in D.items():
L+=f(item)
return Counter(L)
答案 0 :(得分:2)
您可以使用以下嵌套循环:
s = {}
for t, c in D.items():
for i in t:
s[i] = s.get(i, 0) + c
s
将变为:
{'a': 4, 'b': 6, 'c': 6}
答案 1 :(得分:0)
>>> import collections as ct
>>> D={('a','b','c'):4,('b','c'):2,}
>>> listOfElements = []
>>> for key in D:
... listOfElements += list(key)*D[key]
...
>>> dict(ct.Counter(listOfElements))
{'a': 4, 'b': 6, 'c': 6}
我希望这能解决您的问题。