Как складывать несколько одинаковых элементов в списке?
Есть список:
mylist = ["8A", "4R", "2A", "3H", "7R"]
Нужна программа, которая будет складывать одинаковые элементы в одно целое. То есть, к примеру, если посмотреть на список выше, то должно получиться следующее:
mylistNew = ["10A", "11R", "3H"]
Похоже на принцип в математике, как принцип сложение подобных. Здесь примерно тоже самое. То есть сама программа должна просматривать элементы списка и при нахождении одинаковых складывает числа в другое число побольше, а букву оставляет одинаковой.
def sum_items(arr):
result = {}
for item in arr:
v, k = int(item[:-1]), item[-1]
result[k] = result.get(k, 0) + v
return [ str(v) + k for k, v in result.items() ]
from collections import defaultdict
from functools import reduce
a = ["8A", "4R", "2A", "3H", "7R"]
x = [str(v) + k for k, v in reduce(lambda acc, v: acc.update({v[0]: acc[v[0]] + v[1]}) or acc,
((i[-1], int(i[:-1])) for i in a),
defaultdict(int)).items()]