给定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
时间: 2024-01-22 17:21:01 浏览: 177
以下是 Python 代码实现:
```python
n = int(input())
nums = list(map(int, input().split()))
# 统计出现次数
count = {}
for num in nums:
if num in count:
count[num] += 1
else:
count[num] = 1
# 按出现次数从多到少排序
result = sorted(count.items(), key=lambda x: (-x[1], x[0]))
# 输出结果
for num, freq in result:
print(num, freq)
```
解释一下代码:
首先读入整数的数量 `n` 和这些整数 `nums`。接下来创建一个字典 `count`,用于统计每个整数出现的次数。对于每个整数,在字典中查找它是否已经存在,若存在则将其对应的计数器加 1,否则将它的计数器初始化为 1。
接着使用 `sorted` 函数对字典 `count` 中的每个键值对进行排序。排序的关键在于 `key` 参数,使用一个 lambda 表达式指定了排序的方式:先按照出现次数降序排列,如果出现次数相同,则按照键值升序排列。
最后遍历排序后的结果,输出每个整数和它的出现次数。
阅读全文