78 votes

Trouver l'élément avec le maximum d'occurrences dans une liste

En Python, j'ai une liste :

 L = [1, 2, 45, 55, 5, 4, 4, 4, 4, 4, 4, 5456, 56, 6, 7, 67]  

Je veux identifier l'élément qui s'est produit le plus de fois. Je suis capable de le résoudre mais j'ai besoin du moyen le plus rapide pour le faire. Je sais qu'il y a une belle réponse Pythonic à cela.

132voto

phihag Points 89765
from collections import Counter
most_common,num_most_common = Counter(L).most_common(1)[0] # 4, 6 times

Pour les anciennes versions de Python (< 2.7), vous pouvez utiliser cette recette pour créer la classe Counter

18voto

Andrew Clark Points 77748

Voici une defaultdict qui fonctionnera avec les versions Python 2.5 et supérieures :

 from collections import defaultdict

L = [1,2,45,55,5,4,4,4,4,4,4,5456,56,6,7,67]
d = defaultdict(int)
for i in L:
    d[i] += 1
result = max(d.iteritems(), key=lambda x: x[1])
print result
# (4, 6)
# The number 4 occurs 6 times

Remarque si L = [1, 2, 45, 55, 5, 4, 4, 4, 4, 4, 4, 5456, 7, 7, 7, 7, 7, 56, 6, 7, 67] puis il y a six 4 et six 7. Cependant, le résultat sera (4, 6) soit six 4s.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X