输入为一个数正整数 i,要求根据 grade0.csv 文件的第 i 列值升序排列后输出文件中的数据,当第 i 列数据值相同时,按第 1 列数据的值辅助排序(测试数据保证为正整数且不超过数据列数)。 输出格式: 按行输出排序后的信息,数据列之间用tab(‘\t’)分隔,最后一列后面没有空格。
时间: 2024-03-09 08:50:14 浏览: 84
以下是Python代码实现:
```python
import csv
i = int(input("请输入列数i:"))
with open("grade0.csv", "r", encoding="UTF-8") as fo:
csv_reader = csv.reader(fo)
data = [row for row in csv_reader]
column = [(float(row[i-1]), float(row[0])) for row in data[1:]]
column.sort()
sorted_data = [[str(int(row[0]))] + [str(float(item[0])) for item in column if item[1] == float(row[0])] for row in data[1:]]
for row in sorted_data:
print("\t".join(row))
```
首先使用`csv`模块读取`grade0.csv`文件中的数据,将数据存储在`data`列表中。然后根据输入的列数`i`,提取出第i列和第1列的数据,组成`(value, key)`的元组列表`column`,其中`key`为第1列的值,用于辅助排序。将`column`列表按照`value`进行升序排列。
然后对于每一行数据,提取出第1列的值作为`key`,在`column`列表中查找对应的`value`值相等的元素,将这些元素对应的第1列和第i列的值组成一个列表,作为排列后的这一行数据。最后按照要求输出排列后的数据。
阅读全文