题解 | #成绩排序#
成绩排序
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"])
小排一手序即可,注意 所需要的自定义比较函数的返回值。
具体来说:
- -1:表示 应该排在 之前。
- 1:表示 应该排在 之后。