Использование вложенных списков для поиска второго наименьшего балла (ов)

n = int(input()) становится первым значением 5, введенным выше, которое указывает, сколько учащихся вместе с их общими баллами указано в списке.

nlist = [[input(), float(input())] for _ in range(n)] перебирает введенные учащиеся/баллы. [input(), float(input())] устанавливает формат каждого вложенного списка, например. ['Harry', 37.21]. nlist хранит вложенные списки: [['Harry', 37.21], ['Berry', 37.21], ['Tina', 37.2], ['Akriti', 41.0], ['Harsh', 39.0]].

second_lowest = sorted(list(set([marks for name, marks in nlist])))[1] получает второй самый низкий балл. Функция set() удаляет лишнее значение 37.21, чтобы можно было проиндексировать второе самое низкое значение, например. [1].

Наконец, '\n'.join([a for a, b in sorted(nlist) if b == second_lowest]) предназначен для повторения одинаковых вторых самых низких оценок, их сортировки и печати построчно, аналогично формату.

После выполнения скрипта введите данные вручную, как показано ниже:

$ python nested_list_comprehensions.py
5    
Harry
37.21
Berry
37.21
Tina
37.2
Akriti
41
Harsh
39

Скрипт напечатает учеников со вторыми наименьшими баллами:

Berry
Harry