问题描述
试题编号: | 201503-2 |
试题名称: | 数字排序 |
时间限制: | 1.0s |
内存限制: | 256.0MB |
问题描述: | 问题描述 给定n个整数,请统计出每个整数出现的次数,按出现次数从多到少的顺序输出。 输入格式 输入的第一行包含一个整数n,表示给定数字的个数。 输出格式 输出多行,每行包含两个整数,分别表示一个给定的整数和它出现的次数。按出现次数递减的顺序输出。如果两个整数出现的次数一样多,则先输出值较小的,然后输出值较大的。 样例输入 12 样例输出 3 4
扫描二维码关注公众号,回复:
2811946 查看本文章
评测用例规模与约定 1 ≤ n ≤ 1000,给出的数都是不超过1000的非负整数。 |
这题的思路简单,解法众多,这里使用Counter类生成计数字典再相应排序出输出顺序即可。
import collections
n = int(input())
number_list = list(map(int, input().split()))
p = collections.Counter(number_list)
while True:
times = 0
for v in p.values():
if v >= times:
times = v
list_l = []
for k, v in p.items():
if v == times:
list_l.append(k)
list_l.sort()
for item in list_l:
p.pop(item)
for item in list_l:
print(item, times)
if p.keys().__len__() == 0:
break