文件'singup.tat'中保存了若干条参加运动会学生的报名记录,每条记录的形式为“班级号_学号”,例如“A1_12”,将每个班级振名情况按参加运动会人数从多到少排列(假设不存在人数相同的情况)并输出,输出结果如下:
时间: 2024-03-24 20:37:40 浏览: 145
汇编学生成绩排名,能将各个学生的学号,成绩,名次输出
5星 · 资源好评率100%
可以按照以下步骤实现:
1. 读取文件内容并统计每个班级的参加人数。
2. 将班级号和参加人数存储到一个字典中。
3. 将字典按照参加人数从多到少排序。
4. 输出排序后的班级号和参加人数。
具体实现代码如下:
```python
# 1. 读取文件内容并统计每个班级的参加人数。
with open('singup.tat', 'r') as f:
lines = f.readlines()
count = {}
for line in lines:
class_id, _ = line.strip().split('_')
count[class_id] = count.get(class_id, 0) + 1
# 2. 将班级号和参加人数存储到一个字典中。
result = {}
for class_id, num in count.items():
result[class_id] = num
# 3. 将字典按照参加人数从多到少排序。
result = dict(sorted(result.items(), key=lambda x: x[1], reverse=True))
# 4. 输出排序后的班级号和参加人数。
for class_id, num in result.items():
print(f'{class_id}: {num}')
```
输出结果类似如下:
```
B1: 25
A1: 20
C1: 18
D1: 15
E1: 12
```
阅读全文