Somando valores em um dicionário de strings


Autor/fonte: César Tinum da Silva
E-mail/Url: http://www.vivaolinux.com.br/dica/Python-Somando-valores-em-um-diciona...
Tags: [ strings ]



Digg del.icio.us

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

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.




Enviado por xKuRt em 07/05/2009 às 10:37


Avaliação

Esta publicação ainda não foi avaliada!


Avaliar:


A avaliação de publicações é restrita a membros cadastrados e logados no nosso site.



Comentários

AvatarEnviado por igorsobreira em 07/05/2009 às 20:01

As funções map() e filter() são realmente bem úteis, mas nesse caso acho que só dificultou a leitura...

Eu teria feito assim:

>>> dic = {'a':'10','b':'20','c':'30','d':'40','c':'50'}
>>> sum( float(v) for v in dic.values() )
120.0

(considerando que realmente que não precisa tratar o ValueError)

Generators expressions, bem legível e muito eficiente.`

Abraço!

--
Igor Sobreira


Envio de comentário:




  

Quinta, 26 de Maio de 2016




Top 5 membros

Últimos membros online

Últimos membros cadastrados



Capa do livro
PHP para Quem Conhece PHP


Capa do livro
PHP para Quem Conhece PHP


Capa do livro
Construindo Aplicativos Android com HTML, CSS e JavaScript: Criando Aplicativos Nativos com Ferramentas Baseadas nos Padrões Web





Hostnet

IMD