我有一个代码按字母顺序排序名称,它还会打印名称所达到的分数的最大值。但是,我非常困惑,我怎么能把最高分最高的名字输出到最低分。
info = open("resultsA.txt", "r")
splitting =[line.split(",") for line in info]
sorting = sorted(splitting, key=lambda v:v[0])
results= [(name, max(a+b+c)) for name, a, b, c in sorting]
for name, score in results:
print(name+"-"+score)
info.close()
上面的代码按字母顺序对resultsA.txt中存储的数据进行排序,但是我需要它来从最高的最大值到最低的最大值对数据进行排序。
非常感谢。
答案 0 :(得分:1)
您要排序的key
是v[0]
,并且从代码的其余部分看起来v[0]
就是名称。更改密钥以对最高分进行排序将解决问题。
首先你需要计算:
results = [(name, max(a+b+c)) for name, a, b, c in splitting]
。
然后对每个元组的第二个元素进行排序:
results = sorted(results, key = lambda v: v[1])
但是 sorted
默认情况下会以最低到最高的顺序为您提供结果(这是有意义的,因为我们通常会计算)。因此,在您的情况下,您还必须告诉它反转顺序:
results = sorted(results, key = lambda v: v[1], reverse=True)