给定一个只包含正整数的非空数组,返回该数组中重复次数最多的前N个数字 ,返回的结果按重复次数从多到少降序排列(N不存在取值非法的情况)

时间:2022-04-20 12:45:38
 """
#给定一个只包含正整数的非空数组,返回该数组中重复次数最多的前N个数字
#返回的结果按重复次数从多到少降序排列(N不存在取值非法的情况)
解题思路:
1.设定一个空字典,去存储列表中的值和值出现的次数
2.使用L.count()方法可以统计出L中值出现的次数
3.使用sorted方法可以进行排序,sorted(iterable,key,reverse)
注意key是函数
4.列表中的元祖取值 d[i][j] i是哪一个元祖,j是元祖中的第几个值 """
def sort(N):
d = {}
for i in L:
d[i] = L.count(i)
#print(d)
dd = sorted(d.items(),key= lambda item : item[1],reverse= True)
print(dd)
for i in range(0,N):
print("出现次数排第%d的数字是%d,共出现了%d次" % (i+1,dd[i][0],dd[i][1]))
if __name__ == '__main__':
L = [1, 2, 3, 2, 3, 1, 2, 1, 2, 3, 2, 1, 4, 3, 2]
l = len(set(L))
N = int(input("请输入一个不大于%d的数:" % l))
sort(N)