Я думаю, что лучший способ получить go - использовать словарь, в котором оценки будут использоваться в качестве ключей. Упорядочив список соответствующим образом, вы можете ввести пары «ключ-значение» в словарь, чтобы при последующей печати вы получали желаемый результат.
Это использует тот факт, что, как и для 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