通过所有10个测试的嵌套列表HackerRank问题

问题描述 投票:0回答:1

给出物理班学生的每个学生的姓名和成绩,将它们存储在嵌套列表中,并打印出成绩第二低的任何学生的姓名。

注意:如果有多个同等级的学生,请按字母顺序排列其姓名,并在新行上打印每个姓名。

输入格式

第一行包含一个整数,即学生数。后面的几行用行来描述每个学生;第一行包含学生的姓名,第二行包含学生的成绩。

约束

总是会有一个或多个学生的成绩第二低。

输出格式

打印任何物理成绩最低的学生的姓名;如果有多个学生,请按字母顺序排列其姓名,然后将每个姓名打印在新行上。

样本输入

5
Harry
37.21
Berry
37.21
Tina
37.2
Akriti
41
Harsh
39

样本输出

Berry
Harry

这是我的问题代码:

    if __name__ == '__main__':

       list = []
       for _ in range(int(input())):
          name = input()
          score = float(input())

          #list = []

          list.append([name, score])

          #print(list)
       list.sort(key = lambda x: float(x[1]))
       #print(list)

       new_lst = []

       for i in range(len(list)):
          for j in range(1):
              if list[i][1] == list[1][1]:
                  new_lst += [list[i][0]]
       #print(new_lst)
        sorted_lst = sorted(new_lst)
       #print(sorted_lst)


       for student in sorted_lst:
           print(student)

代码在10个测试用例中有2个(测试2和3)失败。这是测试2和3的情况:

样本输入(测试2)

5
Harsh
20
Beria
20
Varun
19
Kakunami
19
Vikas
21

样本输出(测试2)

Beria
Harsh

样本输入(测试3)

4
Rachel
-50
Mawer
-50
Sheen
-50
Shaheen
51

样本输出(测试3)

Shaheen

但是,我无法弄清楚为什么这两个测试用例无法正常工作,因为我认为我已经很好地涵盖了边界测试用例。我的代码确实通过了10个测试中的8个,尽管包括了上面的第一个测试用例。

我缺少什么吗?

python nested-lists
1个回答
0
投票

使用heapitertools.groupby的一种可能的实现:

itertools.groupby
© www.soinside.com 2019 - 2024. All rights reserved.