从Excelsorting列表从最高到最低

我需要从现有的Excel文件中sorting三个学生的分数,find他们的最大值,然后在新的Excel文件中输出这些分数从最高到最低。

我明白如何从文件中读取并find最大值。 这是我的代码到目前为止:

import csv import operator file_reader=open("scoreresults.csv","r") csv_r=csv.reader(file_reader,delimiter=",") file_writer =open( "score results output.csv","w", newline="") csv_w=csv.writer(file_writer) newdata=[] for row in csv_r: forename,deposit1,deposit2,deposit3=row newdata.append(forename) newdata.append(deposit1) newdata.append(deposit2) newdata.append(deposit3) file=[forename,deposit1,deposit2,deposit3] maximumn=max(file) file1=[forename,maximumn] file1.sort(key=operator.itemgetter(1)) csv_w.writerow([file1]) file_reader.close() file_writer.close() 

我没有添加我试图sorting的位,因为我完全失败了。 当我试图使用itemgetter我只能打印,而不是保存到一个文件,并从最低到最高sorting。

它应该如何看的一个例子是:

 name score name score James 2 should turn into sam 10 sam 10 jane 9 dan 5 dan 5 lee 4 lee 4 jane 9 james 2 

 import csv from operator import itemgetter with open("scoreresults.csv","r") as r, open( "score_results_output.csv","w", newline="") as f: csv_w = csv.writer(f) csv_r = csv.reader(r) csv_w.writerows(sorted((((name, max(scores,key=int)) for name,*scores in csv_r)), key=itemgetter(1), reverse=True)) 

首先用csv_w.writerow(next(csv_r))写头,然后用max(scores,key=int))对获得每个用户得分最大值的行进行sorting,传递key key=itemgetter(1)第二个元素是每个用法的最高分数, reverse=True从最高到最低sorting。

input:

 name,score sam,10,12,13 dan,5,23,2 lee,4,23,5 jane,9,2,10 

输出:

 name,score dan,23 lee,23 sam,13 jane,10 

根据forename,deposit1,deposit2,deposit3=row我假设你有一个名字,每行三个分数

你在生活中比在你自己的代码中要困难得多,你的sorting永远不会工作的原因是你比较string而不是整数,你需要投到int:

 file1.sort(key=lambda x: int(x[1]))