1. 程式人生 > >給定一個只包含正整數的非空陣列,返回該陣列中重複次數最多的前N個數字 ,返回的結果按重複次數從多到少降序排列(N不存在取值非法的情況)

給定一個只包含正整數的非空陣列,返回該陣列中重複次數最多的前N個數字 ,返回的結果按重複次數從多到少降序排列(N不存在取值非法的情況)

 1 """
 2 #給定一個只包含正整數的非空陣列,返回該陣列中重複次數最多的前N個數字
 3 #返回的結果按重複次數從多到少降序排列(N不存在取值非法的情況)
 4 解題思路:
 5 1.設定一個空字典,去儲存列表中的值和值出現的次數
 6 2.使用L.count()方法可以統計出L中值出現的次數
 7 3.使用sorted方法可以進行排序,sorted(iterable,key,reverse)
 8 注意key是函式
 9 4.列表中的元祖取值 d[i][j] i是哪一個元祖,j是元祖中的第幾個值
10 
11 """
12 def sort(N):
13     d = {}
14     for
i in L: 15 d[i] = L.count(i) 16 #print(d) 17 dd = sorted(d.items(),key= lambda item : item[1],reverse= True) 18 print(dd) 19 for i in range(0,N): 20 print("出現次數排第%d的數字是%d,共出現了%d次" % (i+1,dd[i][0],dd[i][1])) 21 if __name__ == '__main__': 22 L = [1, 2, 3, 2, 3, 1, 2, 1, 2, 3, 2, 1, 4, 3, 2]
23 l = len(set(L)) 24 N = int(input("請輸入一個不大於%d的數:" % l)) 25 sort(N)