怎么样在这个基础上跳过重复的成绩进行排名??

index=0

for i in range (5):  

    for j in range(len(lst)-1):            

        if lst[j]["成绩"]>lst[j+1]["成绩"]:

            temp = lst[j]

            lst[j] = lst[j+1]

            lst[j+1] = temp          

    index += 1

    print(lst[len(lst)-index])

index=0
lst = [{'name':'a', "成绩":98}, {'name':'b', "成绩":100}, \
       {'name':'c', "成绩":98}, {'name':'d', "成绩":60}, \
       {'name':'e', "成绩":99}, {'name':'f', "成绩":70}, \
       {'name':'g', "成绩":60}, {'name':'h', "成绩":59}, \
       {'name':'i', "成绩":77}, {'name':'j', "成绩":80}]

# 去重部分
l = []
score = []
for i in range(len(lst)):
    if lst[i]["成绩"] not in score:
        score.append(lst[i]["成绩"])
        l.append(lst[i])   # l就是去重后的lst
lst = l   # 为了不修改下面的程序,可以直接将l赋值给lst

# 取前五名成绩
index=0
for i in range (5):  
    for j in range(len(lst)-1):            
        if lst[j]["成绩"]>lst[j+1]["成绩"]:
            temp = lst[j]
            lst[j] = lst[j+1]
            lst[j+1] = temp          
    index += 1
    print(lst[len(lst)-index])

如果对你有帮助,帮忙采纳一下!

你先对成绩进行去重,然后再去排名。

你的变量lst的数据格式是怎样的?

index=0
lst = [{'name':'a', "成绩":98}, {'name':'b', "成绩":100}, \
       {'name':'c', "成绩":98}, {'name':'d', "成绩":60}, \
       {'name':'e', "成绩":99}, {'name':'f', "成绩":70}, \
       {'name':'g', "成绩":60}, {'name':'h', "成绩":59}, \
       {'name':'i', "成绩":77}, {'name':'j', "成绩":80}]

score = []
for i in range(len(lst)):
    if lst[i]["成绩"] not in score:
        score.append(lst[i]["成绩"])

score = sorted(score, reverse=True)
for i,k in enumerate(score):
    print('第{0}名的学生成绩为{1}:'.format(i+1, k), end='')
    for j in lst:
        if j["成绩"] == k:
            print(j['name'],end=' ')
    print()

输出:

第1名的学生成绩为100:b 
第2名的学生成绩为99:e 
第3名的学生成绩为98:a c 
第4名的学生成绩为80:j 
第5名的学生成绩为77:i 
第6名的学生成绩为70:f 
第7名的学生成绩为60:d g 
第8名的学生成绩为59:h