算法試題 - 找出一個序列中出現頻率最高的三個數
阿新 • • 發佈:2019-05-14
ons .... span import class for 方法 dict let
題目
找出一個序列中出現頻率最高的三個數
解析
思路一
創建一個新字典, 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)]
算法試題 - 找出一個序列中出現頻率最高的三個數