In this HackerRank Nested Lists problem set, we need to develop a python program in that we have given the names and grades of N students. we need to store them in nested lists and print the name of students on the output screen that have the second-lowest grade. and if there are multiple students having the same grade then print them in alphabetical order.


HackerRank Nested Lists problem solution in Python


Problem solution in Python 2 programming.

n = int(raw_input())
lst = []
for x in range(0, n):
    lst.append([raw_input(), float(raw_input())])
lst = sorted(lst, key=lambda x: x[1]);
for x in range(1, n):
    if(lst[x][1] != lst[x-1][1]):
        score = lst[x][1]
        break
lst = sorted(lst);
for x in range(n):
    if(lst[x][1] == score):
        print lst[x][0]


Problem solution in Python 3 programming.

if __name__ == '__main__':
    students = []
    for _ in range(int(input())):
        name = input()
        score = float(input())
        students.append([name,score]) 
    x = 99999
    for i in range(len(students)):
        if x > float(students[i][1]):
            x = float(students[i][1])
    y = 999999
    for i in range(len(students)):
        if float(students[i][1]) > float(x) and y > float(students[i][1]):
            y = float(students[i][1])
    runner = []
    for i in range(len(students)):
        if float(students[i][1]) == float(y):
            runner.append(students[i][0])
    runner = sorted(runner)

    for i in range(len(runner)):
        print(runner[i])


Problem solution in pypy programming.

if __name__ == '__main__':
    L=[]
    n=int(raw_input())
    for _ in range(n):
        name = raw_input()
        score = float(raw_input())
        L.append([name,score])
    k=[]
    for i in range(n):
        k.append(L[i][1])
    k.sort()
        
    i=1
    while i<n and k[0]==k[i]:
        i=i+1
    m=k[i]
    s=[]
    for j in range(n):
        if L[j][1]==m:
            s.append(L[j][0])
    s.sort()
    for z in range(len(s)):
     print(s[z])


Problem solution in pypy3 programming.

if __name__ == '__main__':
   
    arr = []
    for _ in range(int(input())):
        name = input()
        score = float(input())       
        arr.append([score,name])
    arr.sort()
    for i in range(len(arr)):
         if arr[i][0]> arr[0][0]:
            print(arr[i][1])
            
            if i+1 >= len(arr) or arr[i+1][0] > arr[i][0]:
                #print(arr[i+1][1])
                break    
    #print (arr[1][1])
        #print (arr)
        #print (x)