Python: Somando valores em um dicionário de strings
Dica publicada em Python / Miscelânea
Python: Somando valores em um dicionário de strings
Bom galera, é uma dica simples mas útil em alguns momentos, visto que você pode ter um dicionário como este:
E você quer somar os valores contidos no dicionário, ou seja, sum(dic.values()).
Um método de fazer isso é usando a função anônima lambda combinada com funções do python, neste caso filter e map.
Vejam como ficou:
Onde:
Uma maneira direta que obtém o mesmo resultado é:
Mas fica um exemplo de combinação de funções do Python como estudo e também uma forma de utilizar a função lambda, que economiza muito código.
Abraço e até a próxima.
dic = {'a':'10','b':'20','c':'30','d':'40','c':'50'}
E você quer somar os valores contidos no dicionário, ou seja, sum(dic.values()).
Um método de fazer isso é usando a função anônima lambda combinada com funções do python, neste caso filter e map.
Vejam como ficou:
total = sum(filter(lambda elem:elem,(map(lambda dic:float(dic),dic.values()))))
Onde:
- a função map que é o 2 elemento da função filter que vai converter todos valores do dicionário dic para float e gerando uma lista de floats;
- a função filter só é utilizada para formar uma lista com as respostas, ela vai adicionando cada valor convertido no 2 parâmetro, no caso o resultado da função map, que é uma lista de floats a uma lista de resposta que terá todos os termos somados pela função sum e o resultado guardado em total.
Uma maneira direta que obtém o mesmo resultado é:
total = sum(map(lambda dic:float(dic),dic.values()))
Mas fica um exemplo de combinação de funções do Python como estudo e também uma forma de utilizar a função lambda, que economiza muito código.
Abraço e até a próxima.
sum([ float(x) for x in dic.values()])
tudo está englobado na função sum()
dentro um list compreension [ ]
float(x) para cada x em dicionario.valores()