首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从第7列开始对python文件中的所有记录进行排序?

如何从第7列开始对python文件中的所有记录进行排序?
EN

Stack Overflow用户
提问于 2021-04-13 21:36:11
回答 1查看 36关注 0票数 0

所以我有一个文件:

代码语言:javascript
复制
202010000  Asem       ICS104      0         100         100         200
202010000  Asem       ICS108      2          75          -1          75
202010001  Khalid     ICS202      0          -1          -1          -1
201928690  Hamza      ICS104      0          80          -1          80
201928440  Abdullah   ICS104      0         100         100         200
202012340  Hassan     ICS104      3          60          38          98
201872630  Hadi       ICS108      8          90          90         180
201562730  Anwar      ICS202      4          75          75         150
201829380  Ali        ICS210      3          90          75         165

我需要显示该文件中的所有记录,按总成绩降序排列(第7列)。我问了一个非常类似的问题,根据姓名按字母顺序对记录进行排序(第二列)。答案是这样的:

代码语言:javascript
复制
studentFile = open(input("Enter file name: "), "r")
lines = studentFile.readlines()
    for line in sorted(lines, key=lambda l: l.split()[1]):
        print(line)

我试着为第7列做一些非常类似的事情,如下所示:

代码语言:javascript
复制
studentFile = open(input("Enter file name: "), "r")
lines = studentFile.readlines()
    for line in sorted(lines, key=lambda l: l.split()[6], reverse= True):
        print(line)

但它没有按正确的降序给我数字:

代码语言:javascript
复制
202012340  Hassan     ICS104      3          60          38          98

201928690  Hamza      ICS104      0          80          -1          80

202010000  Asem       ICS108      2          75          -1          75

202010000  Asem       ICS104      0         100         100         200

201928440  Abdullah   ICS104      0         100         100         200

201872630  Hadi       ICS108      8          90          90         180

201829380  Ali        ICS210      3          90          75         165

201562730  Anwar      ICS202      4          75          75         150

202010001  Khalid     ICS202      0          -1          -1          -1

我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-13 21:54:17

您需要在排序前将其转换为int,请尝试以下操作:

代码语言:javascript
复制
studentFile = open(input("Enter file name: "), "r")
lines = studentFile.readlines()
    for line in sorted(lines, key=lambda l: int(l.split()[6]), reverse= True):
        print(line)

输出:

代码语言:javascript
复制
202010000  Asem       ICS104      0         100         100         200

201928440  Abdullah   ICS104      0         100         100         200

201872630  Hadi       ICS108      8          90          90         180

201829380  Ali        ICS210      3          90          75         165

201562730  Anwar      ICS202      4          75          75         150

202012340  Hassan     ICS104      3          60          38          98

201928690  Hamza      ICS104      0          80          -1          80

202010000  Asem       ICS108      2          75          -1          75

202010001  Khalid     ICS202      0          -1          -1          -1

编辑:@cwittah已经在评论中提到了这一点,我没有看到,因为我正在输入答案

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67075967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档