Reputation: 1
Ho to sum this value in this list:
[{'name': 'Radio HF', **'quantidade': '1'**}, {'name': 'Radio HF', **'quantidade': '1'**}, {'name': 'chave fenda', 'quantidade': '2'}, {'name': 'Coletes salva-vidas', 'quantidade': '3'}]
example: if the [index] have same name I want to sum the value in "quantidade"
. How can I do this?
Upvotes: 0
Views: 93
Reputation: 2706
I don't know the reason but the type of your 'quantidade'
is string
, so you have to cast it to int
before doing the sum
.
Code:
mylist = [{'name': 'Radio HF', 'quantidade': '1'},
{'name': 'Radio HF', 'quantidade': '1'},
{'name': 'chave fenda', 'quantidade': '2'},
{'name': 'Coletes salva-vidas', 'quantidade': '3'}]
sums = {}
for x in mylist:
sums[x['name']] = sums.get(x['name'],0) + int(x['quantidade'])
Output:
{'Radio HF': 2, 'chave fenda': 2, 'Coletes salva-vidas': 3}
Upvotes: 1
Reputation: 50809
Iterate over the dictionaries in the list and use a dictionary to sum the quantidade
value by similar name
.
lst = [{'name': 'Radio HF', 'quantidade': '1'},
{'name': 'Radio HF', 'quantidade': '1'},
{'name': 'chave fenda', 'quantidade': '2'},
{'name': 'Coletes salva-vidas', 'quantidade': '3'}]
sums = {}
for d in lst:
sums[d['name']] = sums.get(d['name'], 0) + int(d['quantidade'])
print(sums) # {'Radio HF': 2, 'chave fenda': 2, 'Coletes salva-vidas': 3}
Upvotes: 1