Digamos que eu tenho um dicionário no qual as chaves são mapeadas para números inteiros como:
d = {'key1': 1,'key2': 14,'key3': 47}
Existe uma maneira sintaticamente minimalista de retornar a soma dos valores em d
-ie 62
, neste caso?
python
dictionary
hash
sum
nedblorf
fonte
fonte
sum
se em termos dereduce
-reduce
é uma forma mais geral (por exemplosum
,min
emax
pode ser escrita em termos dereduce
) e pode resolver outros problemas (por exemploproduct
) facilmente.Respostas:
Como seria de esperar:
fonte
Python 2.7.12
também funciona bem comsum(d.values())
d.values()
.No Python 2, você pode evitar fazer uma cópia temporária de todos os valores usando o
itervalues()
método dictionary, que retorna um iterador das chaves do dicionário:No Python 3, você pode simplesmente usar
d.values()
porque esse método foi alterado para fazer isso (eitervalues()
foi removido porque não era mais necessário).Para facilitar a gravação de código independente da versão, que sempre repete os valores das chaves do dicionário, uma função de utilitário pode ser útil:
Isso é essencialmente o que o
six
módulo de Benjamin Peterson faz.fonte
Claro que existe. Aqui está uma maneira de somar os valores de um dicionário.
fonte
você pode fazer isso usando o loop for
fonte
Eu sinto que
sum(d.values())
é a maneira mais eficiente de obter a soma.Você também pode tentar a função reduzir para calcular a soma junto com uma expressão lambda:
fonte
sum (d.values ()) - "d" -> Seu dicionário Variável
fonte
A resposta de phihag (e similares) não funcionará em python3.
Para python 3:
Atualizar! Há queixas de que não funciona! Acabei de anexar uma captura de tela do meu terminal. Pode haver alguma incompatibilidade nas versões etc.
fonte
Você pode considerar 'for loop' para isso:
total = 800
fonte
sum(d.values())
, já que.values()
retorna aList
.Você pode obter um gerador de todos os valores no dicionário, convertê-lo em uma lista e usar a função sum () para obter a soma de todos os valores.
Exemplo:
fonte