题解 | #成绩排序#
成绩排序
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:表示
应该排在
之后。
查看30道真题和解析
