給定一個只包含正整數的非空陣列,返回該陣列中重複次數最多的前N個數字 ,返回的結果按重複次數從多到少降序排列(N不存在取值非法的情況)
阿新 • • 發佈:2018-10-31
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 fori 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)