Examples of how to sort a list by the number of occurrences (repetitions) in python
Sort a list of numbers by the number of occurrences:
To sort a list of numbers by the number of occurrences, a solution is to use the function counter, example:
>>> 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)]
the function returns, in descending order, the number with the number of occurrences associated. For example,
number 3 has 4 occurrences in the list. To keep only the numbers:
>>> l_sorted = [i[0] for i in l_sorted]
>>> l_sorted
[3, 2, 8, 9, 7, 0, 6, 1, 4, 5]
Note: to sort in ascending order, a solution is to then use the reverse function:
>>> l_sorted.reverse()
>>> l_sorted
[5, 4, 1, 6, 0, 7, 9, 8, 2, 3]
Sort a list of strings by the number of repetitions
Another example with a list of letters:
>>> 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)]
the function returns, in descending order, the letter with the number of occurrences associated. For example,
the letter 'd' has 4 occurrences in the list. To keep only the numbers:
>>> l_sorted = [i[0] for i in l_sorted]
>>> l_sorted
['d', 'a', 'c', 'b']
Note: to sort in ascending order, a solution is to then use the reverse function:
>>> l_sorted.reverse()
>>> l_sorted
['b', 'c', 'a', 'd']
References
Links | Site |
---|---|
collections | python doc |
Python- find the item with maximum occurrences in a list | stackoverflow |
Python most common element in a list | stackoverflow |