将计数器对象的元素相乘

时间:2018-09-07 08:06:54

标签: python dictionary counter

有没有一种方法可以将计数器对象的元素乘以它们的计数? 例如,如果我要将此元素相乘:

Counter({5: 3, 6: 2, 8: 1})

我会得到

{15, 12, 8}

2 个答案:

答案 0 :(得分:0)

尝试将Counter对象转换为元组列表(也无法订购set,因此请使用list

>>> c=Counter({5: 3, 6: 2, 8: 1})
>>> [x*y for x,y in c.items()]
[15, 12, 8]
>>> 

答案 1 :(得分:0)

您可以按照@ U9-Forward的解决方案使用列表推导。

operator.mulzip可以使用另一种functional解决方案:

from collections import Counter
from operator import mul

c = Counter({5: 3, 6: 2, 8: 1})

res = list(map(mul, *zip(*c.items())))

# [15, 12, 8]

如果您确实需要set,请用map而不是set包裹list。区别在于set是唯一项目的无序集合,而list是没有重复项的有序集合。