我是编程新手,在解决此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))])
答案 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