【问题标题】:Sorting by highest value按最高值排序
【发布时间】:2016-04-30 07:52:01
【问题描述】:

我有一个按字母顺序排列名称的代码,它还打印该名称所获得的分数的最大值。但是,我很困惑如何让它输出最高分最高到最低最高分的名称。

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

非常感谢。

【问题讨论】:

    标签: python-3.x


    【解决方案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)

    【讨论】:

    • 非常感谢!你帮了我很大的忙!
    猜你喜欢
    • 2019-06-03
    • 2017-07-07
    • 1970-01-01
    • 2013-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-06
    • 2019-02-18
    相关资源
    最近更新 更多