7
votes

Comptez le nombre d'éléments de la même valeur en python

Dupliqué possible:
Comment compter la fréquence des éléments dans un liste?

Je souhaite compter le nombre d'éléments de la même valeur dans une liste et renvoyer un dict comme tel: xxx

Je suppose que c'est une sorte d'histogramme?


2 commentaires

Je n'ai pas abouti mais c'est probablement parce que vous auriez pu trouver la réponse à cela avec quelques secondes de recherche comme il s'agit probablement de la question la plus duped.


Le "duplicate" mentionné ne répond pas à cette question, car Theodor demande un dict comme le résultat, ce qui est exactement ce que je cherchais juste. Stackoverflow.com/questions/2161752/... donne une sortie différente. - Upvoted :-)


4 Réponses :


7
votes

Utilisez un compteur :

>>> from collections import Counter

>>> a = map(int,[x**0.5 for x in range(20)])
>>> a
[0, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4] 
>>> c = Counter(a)
>>> c[2]
5


1 commentaires

Comme Mark Byers noté, le compteur n'est disponible que dans Python 2.7+. Mais je pense qu'il est temps de mettre à jour mon 2.6.6 de toute façon;)



4
votes

Utiliser Comptez pour obtenir le nombre d'éléments de la liste et définis pour des éléments uniques:

>>> l = [0, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4]
>>> k = [(x, l.count(x)) for x in set(l)]
>>> k
[(0, 1), (1, 3), (2, 5), (3, 7), (4, 4)]
>>> 
>>> 
>>> dict(k)
{0: 1, 1: 3, 2: 5, 3: 7, 4: 4}
>>> 


1 commentaires

Ceci est assez inefficace, l.count (x) scanne toute la liste à chaque fois



8
votes

C'est un bon moyen si vous n'avez pas Collections.Conter Code> Disponible

from collections import defaultdict
d = defaultdict(int)
a = map(int, [x**0.5 for x in range(20)])
for i in a:
    d[i] += 1

print d


1 commentaires

Merci, cela a bien fonctionné. Je devrais probablement mettre à jour Python comme mentionné ci-dessus, mais le temps est toujours court;)



0
votes

Avant il y avait un compteur, il y avait groupby: xxx

(pour le groupe de personnes à travailler à cette fin, la liste d'entrée A doit être dans la commande triée. Ce cas, A est déjà trié.)


0 commentaires