python 问题描述】 给出班里某门课程的成绩文件test5.csv(utf-8编码),每行为每个学生的名字和他的成绩, 中间用逗号隔开。请你按成绩从高到低对数据排序输出,如果有相同分数则名字字典序小的在前(按名字升序)排序。 【输入形式】 输入来自文件 【输出形式】 把成绩按分数从高到低的顺序进行排序并输出,每行包含名字和分数两项,之间有一个空格。 【样例输入】 文件内容如下时: Kitty,80 Tom,28 Hanmeimei,90 Joey,92 Tim,28 【样例输出】 Joey 92 Hanmeimei 90 Kitty 80 Tim 28 Tom 28
时间: 2024-03-23 07:40:52 浏览: 49
对学生信息以成绩高到低排序
5星 · 资源好评率100%
以下是代码实现:
```python
import csv
with open('test5.csv', 'r', encoding='utf-8') as f:
reader = csv.reader(f)
scores = [(row[0], int(row[1])) for row in reader]
scores.sort(key=lambda x: (-x[1], x[0]))
for name, score in scores:
print(name, score)
```
解释一下代码:
- 首先,我们使用 `csv` 模块读取输入文件,将每一行拆分为名字和成绩两个元素,并将成绩转换为整数类型。
- 然后,我们使用 `sort` 方法对 `scores` 列表进行排序。排序的规则是:首先按成绩从高到低排序(因此成绩需要加上负号),如果成绩相同,则按名字升序排序(因此不加负号)。
- 最后,我们遍历排序后的 `scores` 列表,按格式输出每个人的名字和成绩。
阅读全文