2. 数字出现次数排序 【问题描述】 给定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 【样例说明】 n不超过1000,给出的数为2,000,000,000以内的非负整数。
时间: 2024-03-03 14:49:53 浏览: 160
统计每个整数的出现次数
3星 · 编辑精心推荐
好的,根据您的要求,我来为您解答这个问题。
以下是 Python 代码实现:
```
n = int(input())
nums = list(map(int, input().split()))
counter = {}
for num in nums:
counter[num] = counter.get(num, 0) + 1
sorted_counter = sorted(counter.items(), key=lambda x: (-x[1], x[0]))
for k, v in sorted_counter:
print(k, v)
```
解释一下代码:
- `n = int(input())`:输入数字的个数。
- `nums = list(map(int, input().split()))`:输入数字序列。
- `counter = {}`:创建一个空的字典,用于统计数字出现的次数。
- `for num in nums: counter[num] = counter.get(num, 0) + 1`:遍历数字序列,统计每个数字出现的次数,保存在 `counter` 字典中。
- `sorted(counter.items(), key=lambda x: (-x[1], x[0]))`:对 `counter` 字典按照值从大到小、键从小到大的顺序进行排序,得到一个元素为元组的列表。
- `for k, v in sorted_counter: print(k, v)`:遍历排序后的列表,输出每个数字以及它出现的次数。
希望能够帮助到您!如果您还有其他问题,可以继续提出。
阅读全文