Sorting A Python List By Frequency Of Elements
I have this code which sorts python list by frequency of elements. It works for all other cases except when frequency of two elements are same. If the frequency is same then I want
Solution 1:
You can set your key lambda function to a tuple, so, It will sort by counts[x]
first and if there is a tie, it will sort by x
, the value itself.
new_list = sorted(arr, key=lambda x: (counts[x], x))
Solution 2:
You are only sorting by the number of item. Under this logic, all the items which appear once have the same "weight", so python retains their original relevant position. E.g., 3
and 1
both appear once, so as far as their sorting is concerned, they are equivalent. Since 3
comes before 1
in the original list, it is also placed first in the result.
Your required output calls for a secondary sort criteria - the value of the element. To do so, you must specify this explicitly:
new_list = sorted(arr, key=lambda x: (counts[x], x))
Post a Comment for "Sorting A Python List By Frequency Of Elements"