查找亚军得分

时间:2020-06-18 11:56:04

标签: python python-3.x

我是编程新手,在解决此HackerRank问题时遇到了一个问题。 https://www.hackerrank.com/challenges/nested-list/problem?h_r=next-challenge&h_v=zen 我的代码工作正常,但无法获得所需的输出。

student_marks = {}
lsit_name = []
lsit_marks = []
N = int(input())

for _ in range(N):
    name = input()
    score = float(input())
    student_marks[name] = [score]
    lsit_marks.append(score)
    lsit_name.append(name)

final = []

for i in range(len(student_marks)):
    if lsit_marks[i] < max(lsit_marks):
        final.append(lsit_marks[i])
print(lsit_name[lsit_marks.index(max(final))])


final_1 = []

for i in range(len(final)):
    if final[i] < max(final):
        final_1.append(final[i])

print(lsit_name[lsit_marks.index(max(final_1))])

1 个答案:

答案 0 :(得分:0)

我认为最好的方法是使用字典将成绩作为关键。通过对列表进行相应的排序,可以在字典中引入键-值对,以便以后打印时获得所需的输出。

这是因为Python 3.6的字典保持了插入顺序。如果您运行的是Python的早期版本,则应该改用OrderedDict模块中的collections对象。

students = [[input(), float(input())] for _ in range(int(input()))]
d = dict()
for name, grades in sorted(students, key=lambda x: (x[1], x[0])):
    d.setdefault(grades, []).append(name)
print(*d[list(d.keys())[1]], sep='\n')

因此,对于以下输入:

5
Harry
37.21
Berry
37.21
Tina
37.2
Akriti
41
Harsh
39

您将获得以下输出:

Berry
Harry
相关问题