2015-09-10 13 views
5

Ho un contatore dal modulo collections. Qual è il modo migliore per sommare tutti i conteggi?Somma tutti i valori di un contatore in Python

Per esempio, ho:

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

e vorrebbe ottenere il valore 7 restituito. Per quanto posso dire, la funzione sum è per l'aggiunta di più contatori insieme.

+0

se aveste la sorgente del contatore (ad es. 'my_counter = Counter (source)'), potresti semplicemente fare 'len (source)' – acushner

risposta

10

Qualcosa di simile farà

sum(my_counter.itervalues()) 

In questo modo non si creano strutture di dati intermedi, basta avere la somma pigramente valutato.

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 

modelli comuni per lavorare con oggetti di contatore: sum (c.values ​​())
# totale di tutti i conteggi

Fonte: https://docs.python.org/2/library/collections.html

+0

Lavorare correttamente in Python 3.6.1! –