Załóżmy, że mam słownik, w którym klucze są odwzorowane na liczby całkowite, takie jak:
d = {'key1': 1,'key2': 14,'key3': 47}
Czy istnieje syntaktycznie minimalistyczny sposób na zwrócenie sumy wartości w d
—ie 62
w tym przypadku?
python
dictionary
hash
sum
nedblorf
źródło
źródło
sum
się w kategoriachreduce
-reduce
jest bardziej powszechną formą (npsum
,min
imax
mogą być w całości napisany w kategoriachreduce
) i może rozwiązać inne problemy (npproduct
) łatwo.Odpowiedzi:
Jak można się spodziewać:
źródło
Python 2.7.12
działa również zsum(d.values())
d.values()
.W Pythonie 2 można uniknąć tworzenia tymczasowej kopii wszystkich wartości za pomocą
itervalues()
metody Dictionary, która zwraca iterator kluczy słownika:W Pythonie 3 możesz po prostu użyć,
d.values()
ponieważ ta metoda została w tym celu zmieniona (iitervalues()
została usunięta, ponieważ nie była już potrzebna).Aby ułatwić pisanie kodu niezależnego od wersji, który zawsze przechodzi przez wartości kluczy słownika, przydatna może być funkcja narzędziowa:
To właśnie
six
robi moduł Benjamina Petersona .źródło
Pewnie że jest. Oto sposób na zsumowanie wartości słownika.
źródło
możesz to zrobić za pomocą pętli for
źródło
Uważam, że
sum(d.values())
jest to najbardziej skuteczny sposób na uzyskanie sumy.Możesz także wypróbować funkcję zmniejszania, aby obliczyć sumę wraz z wyrażeniem lambda:
źródło
sum (d.values ()) - "d" -> Twój słownik Zmienna
źródło
Odpowiedź phihag (i podobne) nie będzie działać w python3.
Dla python 3:
Aktualizacja! Narzekają, że to nie działa! Właśnie dołączam zrzut ekranu z mojego terminala. Może występować niedopasowanie w wersjach itp.
źródło
Możesz rozważyć „pętlę for”:
ogółem = 800
źródło
sum(d.values())
, ponieważ.values()
zwraca aList
.Możesz pobrać generator wszystkich wartości ze słownika, a następnie rzucić go na listę i użyć funkcji sum (), aby uzyskać sumę wszystkich wartości.
Przykład:
źródło