有没有一种方法可以将计数器对象的元素乘以它们的计数? 例如,如果我要将此元素相乘:
Counter({5: 3, 6: 2, 8: 1})
我会得到
{15, 12, 8}
答案 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.mul
和zip
可以使用另一种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
是没有重复项的有序集合。