输入格式: 首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。每组测试先输入1个整数n(1<=n<=100)表示聚会人数,再输入n个字符串(长度不超过7且仅包含小写字母),每个字符串表示一个人的生肖。 输出格式: 对于每组测试,按描述要求输出结果,每种出现的生肖及其人数占一行,每行的两个数据之间以一个空格间隔。每两组测试数据之间留一个空行。 输入样例: 2 4 tiger rabbit dragon rabbit 5 tiger rabbit dragon rabbit dragon 输出样例: rabbit 2 dragon 1 tiger 1 dragon 2 rabbit 2 tiger 1 提示: 鼠、牛、虎、兔、龙、蛇、马、羊、猴、鸡、狗、猪等十二生肖相应的英文单词如下: rat、ox、tiger、rabbit、dragon、snake、horse、goat、monkey、rooster、dog、pig 代码长度限制 16 KB 时间限制 400 ms 内存限制 64 MB
时间: 2023-06-12 18:04:52 浏览: 129
以下是一份 Python 3 的参考代码:
```python
T = int(input())
for t in range(T):
n = int(input())
cnt = {}
for i in range(n):
animal = input().strip()
cnt[animal] = cnt.get(animal, 0) + 1
pairs = sorted(cnt.items(), key=lambda x: (-x[1], x[0])) # 按要求排序
for animal, cnt in pairs:
print(animal, cnt)
if t != T - 1:
print() # 注意输出格式
```
思路解析:
对于每组测试数据,我们可以使用一个字典 `cnt` 来统计每个生肖出现的次数。具体来说,对于每个输入的字符串 `animal`,我们可以通过 `cnt.get(animal, 0)` 来获取该生肖已经出现的次数,然后将其加 1,并将结果保存回字典中,即 `cnt[animal] = cnt.get(animal, 0) + 1`。
统计完每个生肖出现的次数后,我们需要按照题目要求对它们进行排序。具体来说,排序的规则如下:
- 首先按照出现次数从大到小排序;
- 对于出现次数相同的生肖,按照字典序从小到大排序。
我们可以使用 Python 的内置函数 `sorted` 来完成排序。具体来说,我们将字典 `cnt` 中的每个键值对(即生肖及其出现次数)作为元组 `(animal, cnt)`,然后按照上述规则进行排序。排序的关键字可以通过 `key` 参数指定,我们可以使用一个 lambda 函数来完成。例如,`key=lambda x: (-x[1], x[0])` 表示首先按照元组的第二个元素(即出现次数)从大到小排序,如果出现次数相同,则按照元组的第一个元素(即生肖名称)从小到大排序。
最后,我们按照排好序的结果输出每个生肖及其出现次数即可。需要注意的是,每两组测试数据之间需要输出一个空行。
阅读全文