2015-09-10 20 views
5

Mam licznik z modułu collections. Jaki jest najlepszy sposób podsumowania wszystkich obliczeń?Suma wszystkich wartości licznika w Pythonie

Na przykład mam:

my_counter = Counter({'a': 2, 'b': 2, 'c': 2, 'd': 1}) 

i chciałby uzyskać wartość 7 zwrócony. O ile mogę powiedzieć, funkcja sum służy do dodawania wielu liczników razem.

+0

jeśli miał źródło licznika (np. 'my_counter = Counter (źródło)'), możesz po prostu zrobić 'len (source)' – acushner

Odpowiedz

10

Coś jak to zrobi

sum(my_counter.itervalues()) 

ten sposób nie stwarzają żadnych pośrednich struktur danych, po prostu suma leniwie oceniany.

0
c = Counter({'a': 2, 'b': 2, 'c': 2, 'd': 1}) 
len(list(c.elements())) 
2
>>> from collections import Counter 
>>> sum(Counter({'a': 2, 'b': 2, 'c': 2, 'd': 1}).values()) 
7 

wspólne wzorce pracy z Counter obiektów: suma (c.values ​​())
# suma wszystkich zarzutów

Źródło: https://docs.python.org/2/library/collections.html

+0

Działa poprawnie w Pythonie 3.6.1! –