2011-03-31 6 views
5

Python 2.7/3.1 ha introdotto il fantastico collections.Counter.Controllo del numero di elementi in `Counter` di Python

La mia domanda: come faccio a contare quante "apparenze di elementi" ha un contatore?

voglio che questo:

len(list(counter.elements())) 

ma più breve.

+0

ho sollevato l'argomento su Python-idee e Raymond Hettinger, ha detto un metodo 'Counter.elements_count()' può essere aggiunto. Problema di Python: http://bugs.python.org/issue11733 –

risposta

3
sum(counter.itervalues()) 

+3

Non c'è un approccio O (1)? – corsiKa

+0

No, non ce n'è. 'Counter' non tiene traccia di queste informazioni. Almeno sommando i conteggi è molto più efficiente di 'len (list (counter.elements()))'. –

+0

Questo è (a) più efficiente e (b) più succinto del mio metodo originale, ma è ancora brutto. Se non esiste un modo migliore, suggerisco che ci dovrebbe essere un metodo 'Counter.elements_count()'. –

Problemi correlati