Exemples de comment trier une liste en fonction du nombre de répétitions (occurrences) avec python
Trier une liste de nombres en fonction du nombre de répétitions
Pour trier une liste de nombres en fonction du nombre de répétitions on peut utiliser la fonction counter, exemple:
>>> from collections import Counter
>>> l = [8, 3, 9, 2, 7, 1, 3, 2, 0, 0, 7, 8, 6, 9, 4, 6, 3, 3, 2, 5]
>>> l_sorted = Counter(l).most_common()
>>> l_sorted
[(3, 4), (2, 3), (8, 2), (9, 2), (7, 2), (0, 2), (6, 2), (1, 1), (4, 1), (5, 1)]
cette fonction donne le nombre avec le nombre de répétitions de celui-ci dans l'ordre décroissant. Par exemple 3 est le nombre avec le maximum de répétitions (ici 4). Si on veut garder juste les nombres on peut alors procéder comme suit:
>>> l_sorted = [i[0] for i in l_sorted]
>>> l_sorted
[3, 2, 8, 9, 7, 0, 6, 1, 4, 5]
Si on veut dans l'ordre croissant on peut utiliser la fonction reverse:
>>> l_sorted.reverse()
>>> l_sorted
[5, 4, 1, 6, 0, 7, 9, 8, 2, 3]
Trier une liste de lettres (mots, etc.) en fonction du nombre de répétitions
Marche aussi pour trier une liste de lettres (mots, etc.), exemple:
>>> from collections import Counter
>>> l = ['a','a','a','b','c','c','d','d','d','d']
>>> l_sorted = Counter(l).most_common()
>>> l_sorted
[('d', 4), ('a', 3), ('c', 2), ('b', 1)]
cette fonction donne la lettre avec le nombre de répétitions de celui-ci dans l'ordre décroissant. Par exemple 'd' est la lettre avec le maximum de répétitions (ici 4). Si on veut garder juste les lettres on peut alors procéder comme suit:
>>> l_sorted = [i[0] for i in l_sorted]
>>> l_sorted
['d', 'a', 'c', 'b']
Si on veut dans l'ordre croissant on peut utiliser la fonction reverse:
>>> l_sorted.reverse()
>>> l_sorted
['b', 'c', 'a', 'd']
Références
Liens | Site |
---|---|
collections | python doc |
Python- find the item with maximum occurrences in a list | stackoverflow |
Python most common element in a list | stackoverflow |