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.154 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.

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

Criando variáveis dinamicamente com Javascript

Ordenando dicionários em Python

Lidando com erros de execução em seus programas

Obtendo mirrors mais velozes no Arch Linux

Como descobrir seu chat_id no Telegram

DojoTools

Executando um Programa Externo sem Impedir o Funcionamento do Programa em 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.