从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]))