Умножение элементов встречного объекта - PullRequest
0 голосов
/ 07 сентября 2018

Есть ли способ, которым я могу умножить элементы встречного объекта на их количество? Например, если бы я умножил элементы этого:

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

Я бы получил

{15, 12, 8}

Ответы [ 2 ]

0 голосов
/ 07 сентября 2018

Вы можете использовать понимание списка в соответствии с решением @ U9-Forward.

Альтернативное функциональное решение возможно с operator.mul и zip:

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 - упорядоченная коллекция без ограничений на дубликаты.

0 голосов
/ 07 сентября 2018

Попробуйте преобразовать Counter объект в список кортежей (также set невозможно заказать, поэтому используйте list:

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