从最高到最低的excel排序列表



我需要从现有的Excel文件中对三个学生的分数进行排序,找到最大值,然后在新Excel文件中从最高到最低的分数输出。

我了解如何从文件中读取并找到最大值。到目前为止,这是我的代码:

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()

我没有添加尝试对其进行排序的位,因为我完全失败了。当我尝试使用itemgetter时,我只能打印,不能保存到文件,并且从最低到最高。

它应该看起来的一个例子:

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))的每个用户的分数进行排序,然后通过键key=itemgetter(1)通过第二个元素对元素进行排序,这是每种用法的最大分数,都可以从reverse=True分类。最高到最低。

输入:

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,我假设您有一个名称和三个分数

您的生活比在您自己的代码中需要更艰难,您的出现永远无法使用的是您要比较字符串而不是Int,您需要施放INT:

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

最新更新