Pular para o conteúdo

Python: Somando valores em um dicionário de strings

Dica publicada em Python / Miscelânea
César tinum da silva mago_dos_chats
Hits: 28.153 Categoria: Python Subcategoria: Miscelânea
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

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:

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()))))
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

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.

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Ordenando dicionários em Python

Criando variáveis dinamicamente com Javascript

Criando variáveis dinâmicas em PHP a partir de um formulário

Referenciando linhas anteriores em um arquivo csv usando Pandas

Crie o seu jogo roguelike em Python

Python - Diferença entre == e is

Subliminal: buscando legendas via terminal

Usando a função map em vez de for (Python)

#1 Comentário enviado por voyeg3r em 27/10/2009 - 17:10h
Usando list compreensions

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()

#2 Comentário enviado por mago_dos_chats em 28/10/2009 - 09:26h
sim.... funcionaria tb.. mais eu tava tentei mostrar o uso de outras funções.... map e a função anonima lambda...
Valeu pela contribuição.
#3 Comentário enviado por voyeg3r em 05/03/2010 - 14:07h
Fiz de outro modo bem legal

tudo dentro da função 'sum' usando uma list compreension

sum([int(x) for x in dic.values()])

Valores em ponto flutuante

sum([float(x) for x in dic.values()])

Contribuir com comentário

Entre na sua conta para comentar.