Skip to main content
 首页 » 编程设计

python之我如何在 python 中对 csv 文件中的数据进行数字排序

2025年05月04日12insus

我正在编写一个程序,该程序从 csv 文件中获取学生的分数,然后需要从最高分到最低分进行排序。 csv 文件如下所示:

乔希 12
约翰 6
弗雷德 8
哈利 7

我试过将这些项目放在这样的列表中:

 Mylist=[] 
csvfile = open (classname,'r') 
reader = csv.reader(csvfile) 
for row in reader: 
    Mylist.append(row) 

然后反转列表,将数值放在最前面:

Mynewlist = [] 
    for each in Mylist: 
        value2 = ''.join(each[0]) 
        value1 = ''.join(each[1]) 
        mynewlist.append(value1,value2) 

运气不好,我得到了这个错误:

    Traceback (most recent call last): 
  File "<pyshell#0>", line 1, in <module> 
    main() 
  File "\\SRV-FILE3\ca231$\task 3\3.py", line 143, in main 
    value1 = ''.join(each[1]) 
IndexError: list index out of range 

我使用 ''.join(each[1]) 转换为字符串,然后以相反的顺序附加它们然后我计划使用 .sort() 按数字对它们进行排序,但我无法让它们附加到列表中。

有谁知道如何按数值对 csv 文件的内容进行排序?

请您参考如下方法:

我认为你把事情复杂化了。假设您将数据作为列表的列表:

data = [("josh", "12"), ("john", "6"), ("fred", "8"), ("harry", "7")] 

这当然可以来自 CSV,这对排序无关紧要。您可以通过调用 sorted() 进行排序:

sorted(data, key = lambda x: int(x[1])) 

lambda 是一个函数,它选择每个子列表的第二个元素作为键,即分数,并将其转换为数字进行排序。这打印:

[('john', '6'), ('harry', '7'), ('fred', '8'), ('josh', '12')]