算法试题 - 找出一个序列中出现频率最高的三个数
题目
找出一个序列中出现频率最高的三个数
解析
思路一
创建一个新字典, k 为 序列的值, 然后 v 的初始值 0, 然后循环序列进行计数,
然后进行新字典的处理.....
不行, 不好处理了. 此思路不行
思路二
利用 colletctions 的 Counter 模块, 内部有个方法可以解决 k 值问题
答案
答案一
可以往下继续实现, 但是有点麻烦了
li = [2, 5, 3, 4, 1, 8, 1, 2, 6, 6, 1, 5, 1, 5] d = dict.fromkeys(li, 0) print(d) # {2: 0, 5: 0, 3: 0, 4: 0, 1: 0, 8: 0, 6: 0} for i in li: d[i] += 1 print(d) # {2: 2, 5: 3, 3: 1, 4: 1, 1: 4, 8: 1, 6: 2} """ ....... """
答案二
简单方便
from collections import Counter li = [2, 5, 3, 4, 1, 8, 1, 2, 6, 6, 1, 5, 1, 5] c = Counter(li) print(c) # Counter({1: 4, 5: 3, 2: 2, 6: 2, 3: 1, 4: 1, 8: 1}) print(c.most_common(3)) # [(1, 4), (5, 3), (2, 2)]
本文来自博客园,作者:羊驼之歌,转载请注明原文链接:https://www.cnblogs.com/shijieli/p/10863433.html