获取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
可以工作,但我想知道如何在不使用外部库(主要是我自己函数中的代码)的情况下做到这一点。请参见此处: