计算字典中元组中的项目

时间:2018-09-22 13:09:59

标签: python python-3.x

我想知道是否有更好的解决方案来像这样对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)

2 个答案:

答案 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}

我希望这能解决您的问题。