题目描述
给定n个整数,请统计出每个整数出现的次数,按出现次数从多到少的顺序输出。
【输入形式】第一行包含一个整数n,表示给定数字的个数; 第二行包含n个整数,相邻的整数之间用一个空格分隔,表示所给定的整数。
【输出形式】输出有多行,每行包含两个整数,分别表示一个给定的整数和它出现的次数。按出现次数递减的顺序输出。如果两个整数出现的次数一样多,则先输出值较小的,然后输出值较大的。
【样例输入】
12
5 2 3 3 1 3 4 2 5 2 3 5
【样例输出】
3 4
2 3
5 3
1 1
4 1
解题思路:
1.将所有数字排序
2.统计次数
3.对次数进行排序
代码
# coding=utf-8
n = eval(input())
s = input().split(" ")
s.sort() # 1.将所有数字排序
dit = {}
for x in s:#2.统计次数
dit[x] = dit.get(x, 0)+1
#3.按照字典的值降序排列
dit1 = dict(sorted(dit.items(), key=lambda x: x[1], reverse=True))
print("------------运行结果------------")
for key in dit1:
print(key, dit1[key])
'''
测试用例:
12
5 2 3 3 1 3 4 2 5 2 3 5
'''
运行结果