Задать вопрос
@blackbb

Как посчитать сумму одинаковых объектов в списке словарей?

Есть список словарей, задача посчитать сумму поля amount, если у словарей одинаковые uid. Ну и соответсвенно оставить только один словарь.
[
            {
                "uid_1c": "c1f5e839-0c1d-11ed-aa44-ac1f6bd30991",
                "number": "1",
                "amount": 19
            },
            {
                "uid_1c": "c1f5e839-0c1d-11ed-aa44-ac1f6bd30991",
                "number": "2",
                "amount": 10
            },
            {
                "uid_1c": "7421a94a-4327-11ed-aa45-ac1f6bd30990",
                "number": "3",
                "amount": 200
            }
]

То есть по итогу должно получится
[
            {
                "uid_1c": "c1f5e839-0c1d-11ed-aa44-ac1f6bd30991",
                "number": "1",
                "amount": 29
            },
            {
                "uid_1c": "7421a94a-4327-11ed-aa45-ac1f6bd30990",
                "number": "2",
                "amount": 200
            }
]
  • Вопрос задан
  • 132 просмотра
Подписаться 1 Простой 3 комментария
Решение пользователя 0xD34F К ответам на вопрос (2)
0xD34F
@0xD34F
def unique_with_sum(arr, id_key, sum_key):
  unique = {}

  for n in arr:
    unique.setdefault(n[id_key], { **n, sum_key: 0 })[sum_key] += n[sum_key]

  return [*unique.values()]


result = unique_with_sum(arr, 'uid_1c', 'amount')
Ответ написан