Trier une liste en fonction du nombre de répétitions (occurrences) avec python

Published: 26 mars 2019

DMCA.com Protection Status

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