Warm tip: This article is reproduced from serverfault.com, please click

python-排序嵌套列表以获得第二低的分数

(python - Sorting nested lists for second lowest score)

发布于 2018-09-06 14:29:56

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

输入:

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]]
Questioner
Gursimran Singh
Viewed
0
Srinabh 2018-09-06 22:48:41

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

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])