按最高值排序

时间:2016-04-29 23:31:39

标签: python-3.x

我有一个代码按字母顺序排序名称,它还会打印名称所达到的分数的最大值。但是,我非常困惑,我怎么能把最高分最高的名字输出到最低分。

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中存储的数据进行排序,但是我需要它来从最高的最大值到最低的最大值对数据进行排序。

What the code outputs

非常感谢。

1 个答案:

答案 0 :(得分:1)

您要排序的keyv[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)