获取Python列表中最多5个重复出现的值?

获取Python列表中最多5个重复出现的值?,python,arrays,list,sorting,Python,Arrays,List,Sorting,假设我有这样一个列表: list = [0,0,1,1,1,1,1,1,1,1,3,3,3,3,5,9,9,9,9,9,9,22,22,22,22,22,22,22,22,22,22,45] 前5个重复出现的值为: 22、1、9、3和0 获取这些值的最佳方法是什么,以及它们重复出现的次数?我想把这些值放到一个新的列表中,这样我可以得到如下结果: new_list = [22,10, 1,8, 9,6, 3,4, 0,2] 列表值为奇数索引项,重复出现的值为偶数索引项 编辑:不使用库的最简单方

假设我有这样一个列表:

list = [0,0,1,1,1,1,1,1,1,1,3,3,3,3,5,9,9,9,9,9,9,22,22,22,22,22,22,22,22,22,22,45]
前5个重复出现的值为: 22、1、9、3和0

获取这些值的最佳方法是什么,以及它们重复出现的次数?我想把这些值放到一个新的列表中,这样我可以得到如下结果:

new_list = [22,10, 1,8, 9,6, 3,4, 0,2]
列表值为奇数索引项,重复出现的值为偶数索引项


编辑:不使用库的最简单方法是什么?

使用集合。计数器:

from collections import Counter


l = [0,0,1,1,1,1,1,1,1,1,3,3,3,3,5,9,9,9,9,9,9,22,22,22,22,22,22,22,22,22,22,45]

print(Counter(l).most_common())

[(22, 10), (1, 8), (9, 6), (3, 4), (0, 2), (5, 1), (45, 1)]
你给它喂了一只宠物,它会为你计算。resultings dictionaries键是已计数的值,其值是它发生的频率。(即22被计数10次)

Doku:


旁注:

不要在类型或内置之后调用变量,这样会给它们添加阴影,以后会出现问题。不要打电话

list, tuple, dict, set, max, min, abs, ... 

请参阅:使用标准库中的集合。计数器

import collections

list = [0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 5, 9, 9, 9, 9, 9, 9, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 45]
ctr = collections.Counter(list)
print(ctr.most_common(5))
输出

[
    (22, 10),
    (1, 8),
    (9, 6),
    (3, 4),
    (0, 2),
]

使用
集合
模块中的
计数器
。这些值是否已排序?请参阅
collections.Counter
itertools.groupby
。值已排序
collections.Counter
可以工作,但我想知道如何在不使用外部库(主要是我自己函数中的代码)的情况下做到这一点。请参见此处: