所以我有一个文件:
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列)。我问了一个非常类似的问题,根据姓名按字母顺序对记录进行排序(第二列)。答案是这样的:
studentFile = open(input("Enter file name: "), "r")
lines = studentFile.readlines()
for line in sorted(lines, key=lambda l: l.split()[1]):
print(line)我试着为第7列做一些非常类似的事情,如下所示:
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)但它没有按正确的降序给我数字:
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我做错了什么?
发布于 2021-04-13 21:54:17
您需要在排序前将其转换为int,请尝试以下操作:
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)输出:
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已经在评论中提到了这一点,我没有看到,因为我正在输入答案
https://stackoverflow.com/questions/67075967
复制相似问题