Программа складывающая значения в списке словарей

Есть некий список словарей:

spis_dict = [
    {'item':'item1','amount':400},
    {'item':'item2','amount':300},
    {'item':'item1','amount':750}
]

Как сложить значения и вывести, например:

Counter({'item1':1150,'item2':300})

Ответы (2 шт):

Автор решения: S. Nick

Попробуйте так:

spis_dict = [
    {'item': 'item1', 'amount': 400},
    {'item': 'item2', 'amount': 300},
    {'item': 'item1', 'amount': 750}
]

rez = {}
for it in spis_dict:
    item = it['item']
    amount = it['amount']
    
    r = rez.get(item)
    if r is None:
        rez[item] = amount
    else:
        rez[item] += amount
    
print(f'rez = {rez}\n') 
→ Ссылка
Автор решения: Sergey

Существует более элегантное решение:

spis_dict = [
    {'item': 'item1', 'amount': 400},
    {'item': 'item2', 'amount': 300},
    {'item': 'item3', 'amount': 100},
    {'item': 'item1', 'amount': 750},
    {'item': 'item2', 'amount': 50},
    {'item': 'item2', 'amount': 65}
]

rez = {}
for it in spis_dict:
    item = it['item']
    amount = it['amount']
    rez[item] = rez.setdefault(item, 0) + amount
    
print(f'rez = {rez}\n')

Здесь используется метод setdefault(), который делает то же самое, что и метод get() но если нужный элемент пока не существует в словаре, то он создаёт этот элемент с заданным ключом и значением по умолчанию.

В данном случае, в качестве значения по умолчанию используется первоначальная сумма равная нулю. А если элемент существует, то плюсум к нему.

→ Ссылка