web-dev-qa-db-fra.com

Somme de tous les comptes dans une collection.Counter

Quel est le meilleur moyen d’établir la somme de tous les comptes dans un objet collections.Counter?

J'ai essayé:

sum(Counter([1,2,3,4,5,1,2,1,6]))

mais cela donne 21 au lieu de 9 ?

32
Baz

Le code que vous avez additionne les clés (c’est-à-dire les valeurs uniques dans la liste: 1+2+3+4+5+6=21).

Pour additionner les comptes, utilisez:

In [4]: sum(Counter([1,2,3,4,5,1,2,1,6]).values())
Out[4]: 9

Cet idiome est mentionné dans documentation , sous "Pattern patterns".

48
NPE

Somme les valeurs:

sum(some_counter.values())

Démo:

>>> from collections import Counter
>>> c = Counter([1,2,3,4,5,1,2,1,6])
>>> sum(c.values())
9
14
Martijn Pieters
sum(Counter([1,2,3,4,5,1,2,1,6]).values())
0
martyn

Vous pouvez aussi utiliser: 

len(Counter([1,2,3,4,5,1,2,1,6]).elements())
0
lerner