ifullut
@ifullut
Учу программирование понарошку...

Как складывать несколько одинаковых элементов в списке?

Есть список:

mylist = ["8A", "4R", "2A", "3H", "7R"]

Нужна программа, которая будет складывать одинаковые элементы в одно целое. То есть, к примеру, если посмотреть на список выше, то должно получиться следующее:

mylistNew = ["10A", "11R", "3H"]

Похоже на принцип в математике, как принцип сложение подобных. Здесь примерно тоже самое. То есть сама программа должна просматривать элементы списка и при нахождении одинаковых складывает числа в другое число побольше, а букву оставляет одинаковой.
  • Вопрос задан
  • 124 просмотра
Решения вопроса 1
0xD34F
@0xD34F
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() ]
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
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()]
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы