1. 程式人生 > >算法試題 - 找出一個序列中出現頻率最高的三個數

算法試題 - 找出一個序列中出現頻率最高的三個數

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)]

算法試題 - 找出一個序列中出現頻率最高的三個數