首页 > 解决方案 > 对第二低分数的嵌套列表进行排序

问题描述

给定物理课学生中每个学生的姓名和成绩,将它们存储在嵌套列表中,并打印成绩第二低的任何学生的姓名。注意:如果有多个学生的年级相同,请按字母顺序排列他们的姓名,并将每个姓名打印在新行上。

输入:

5
Harry
37.21
Berry
37.21
Tina
37.2
Akriti
41
Harsh
39

输出:

>>Berry
>>Harry

我做了这个

if __name__ == '__main__':
l2=[]
l1=[]
for i in range(int(input())):
    name = input()
    l1.append(name)
    score = float(input())
    l1.append(score)
    l2.append(l1)
print(l2)

但它输出:

>>[['Harry', 37.21], ['Berry', 37.21], ['Tina', 37.2], ['Akriti', 41], ['Harsh', 39]]

标签: pythonpython-3.xpython-2.7

解决方案


要回答您的问题,您可以将嵌套列表的输入作为

n=int(input())
arr=[[input(),float(input())] for _ in range(0,n)]

我相信这是一个黑客等级问题这是解决方案

n=int(input())
arr=[[input(),float(input())] for _ in range(0,n)]
arr.sort(key=lambda x: (x[1],x[0]))
names = [i[0] for i in arr]
marks = [i[1] for i in arr]
min_val=min(marks)
while marks[0]==min_val:
    marks.remove(marks[0])
    names.remove(names[0])    
for x in range(0,len(marks)):
    if marks[x]==min(marks):
        print(names[x])

推荐阅读