问题描述
我想知道是否有更好的解决方案来像这样计算字典中的项目:
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)
1楼
您可以使用以下嵌套循环:
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}
2楼
>>> 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}
我希望这能解决您的问题。