题解 | #成绩排序#

成绩排序

https://www.nowcoder.com/practice/8e400fd9905747e4acc2aeed7240978b

from functools import cmp_to_key


def infosSortCmpS2B(a, b):
    if a["Point"] == b["Point"]:
        return -1 if a["No"] < b["No"] else 1
    else:
        return -1 if a["Point"] < b["Point"] else 1


def infosSortCmpB2S(a, b):
    if a["Point"] == b["Point"]:
        return -1 if a["No"] < b["No"] else 1
    else:
        return -1 if a["Point"] > b["Point"] else 1


if __name__ == "__main__":
    n = int(input())
    sortMode = int(input())

    stuInfoList = list()

    for i in range(n):
        infoStrList = list(str(input()).split(" "))
        nowStuInfo = {
            "Name": infoStrList[0],
            "Point": int(infoStrList[1]),
            "No": i,
        }
        stuInfoList.append(nowStuInfo)

    if sortMode == 0:
        stuInfoList = sorted(stuInfoList, key=cmp_to_key(infosSortCmpB2S))
    else:
        stuInfoList = sorted(stuInfoList, key=cmp_to_key(infosSortCmpS2B))


    for i in stuInfoList:
        print(i["Name"], i["Point"])

小排一手序即可,注意 cmp\_to\_key 所需要的自定义比较函数的返回值。

具体来说:

  • -1:表示 a 应该排在 b 之前。
  • 1:表示 a 应该排在 b 之后。
全部评论

相关推荐

强大的马里奥:不太可能,我校计算机硕士就业率99%
点赞 评论 收藏
分享
每晚夜里独自颤抖:你cet6就cet6,cet4就cet4,你写个cet证书等是什么意思。专业技能快赶上项目行数,你做的这2个项目哪里能提现你有这么多技能呢
点赞 评论 收藏
分享
看到这个内容真是闹麻了。。。。。。现在有了AI以后很多人面试都会作弊吗?&nbsp;那对老老实实面试的人岂不是不公平....
程序员牛肉:公平那是对小孩子讲的童话故事,成年人的世界只有能不能接受失败的后果。 你要是能接受面试作弊被发现之后多家公司联合永久拉黑的后果,你就搞。
你找工作的时候用AI吗?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务