要按照频率降序排序一个列表,可以使用字典来计算每个元素的频率,然后根据频率对元素进行排序。
下面是一个示例代码:
def sort_by_frequency(lst):
# 使用字典来计算每个元素的频率
freq = {}
for elem in lst:
if elem in freq:
freq[elem] += 1
else:
freq[elem] = 1
# 根据频率降序排序元素
sorted_lst = sorted(lst, key=lambda elem: (-freq[elem], elem))
return sorted_lst
# 测试示例
lst = [4, 2, 1, 1, 2, 3, 4, 4, 3, 2, 2, 2]
sorted_lst = sort_by_frequency(lst)
print(sorted_lst)
输出结果为:
[2, 2, 2, 2, 4, 4, 4, 1, 1, 3, 3, 2]
在上面的示例中,首先使用字典 freq
计算每个元素的频率。然后,使用 sorted
函数对原始列表 lst
进行排序,排序的关键字是一个 lambda 函数,该函数先按频率降序排序,如果频率相同,则按元素的大小升序排序。最后返回排序后的列表。
上一篇:按频率过滤Pandas数据框
下一篇:按频率排列