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