在Python中,如何按出现频率对列表进行排序?

4 投票
5 回答
2810 浏览
提问于 2025-04-16 10:34
[3, 3, 3, 4, 4, 2]

应该是:

[ (3, 3), (4, 2), (2, 1) ]

输出的结果应该是按照数量从高到低排序。也就是说,先显示3,再显示2,最后是1。

5 个回答

2

试试用 collections.Counter:

from collections import Counter
data = [3,4,2,3,4,3]
Counter(data).most_common()
13

你可以在Python 2.7及以上版本中使用一个叫做 Counter 的工具(这个 方法 在2.5及以上版本也能用):

from collections import Counter
print Counter([3, 3, 3, 4, 4, 2]).most_common()
# [(3, 3), (4, 2), (2, 1)]
3

在编程中,有时候我们需要处理一些数据,比如从一个地方获取数据,然后在程序中使用它。这就像是从冰箱里拿食材,然后用这些食材做饭一样。

有些时候,我们会遇到一些问题,比如数据格式不对,或者数据缺失。这就像是你打开冰箱,发现缺少了做菜的材料,或者材料的状态不太好。

为了避免这些问题,我们可以在程序中加入一些检查,确保我们得到的数据是正确的。这就像是在做饭之前,先检查一下冰箱里的食材是否齐全和新鲜。

总之,处理数据的时候要小心,确保一切都正常,这样才能顺利完成我们的编程任务。

data = [3, 3, 3, 4, 4, 2]
result = []
for entry in set(data):
    result.append((entry, data.count(entry)))
result.sort(key = lambda x: -x[1])
print result

>>[(3, 3), (4, 2), (2, 1)]

撰写回答