【发布时间】:2020-02-10 04:38:31
【问题描述】:
给定物理课学生中每个学生的姓名和成绩,将它们存储在嵌套列表中,并打印任何成绩第二低的学生的姓名。
注意:如果有多个年级相同的学生,请按字母顺序排列他们的姓名并将每个姓名打印在一个新行上。
输入格式
第一行包含一个整数,学生人数。 随后的几行逐行描述了每个学生;第一行包含学生的姓名,第二行包含他们的成绩。
约束
总会有一名或多名学生成绩倒数第二。 输出格式
打印物理成绩第二低的任何学生的姓名;如果有多个学生,请按字母顺序排列他们的姓名,并将每个学生都打印在新行上。
样本输入 0
5 哈利 37.21 浆果 37.21 蒂娜 37.2 阿克里蒂 41 残酷的 39 样本输出 0
贝瑞 哈利 解释0
这个班级有学生的姓名和成绩被汇总以构建以下列表:
python 学生 = [['Harry', 37.21], ['Berry', 37.21], ['Tina', 37.2], ['Akriti', 41], ['Harsh', 39]]
最低等级的属于蒂娜。排名倒数第二的 属于 Harry 和 Berry,因此我们按字母顺序排列他们的名字并将每个名字打印在新的一行上。
我的代码: **
marksheet=[]
for _ in range(int(raw_input())):
stud=[]
name = raw_input()
score = float(raw_input())
stud.append(name)
stud.append(score)
marksheet.append(stud)
marksheet.sort(key= lambda x:x[0])
minimum = min(marksheet,key = lambda x:x[1])
for x in marksheet:
if x[1]== minimum[1]:
marksheet.remove(x)
sec_high=min(marksheet, key= lambda x :x[1] )
for x in marksheet:
if x[1] == sec_high[1]:
print x[0]
**
【问题讨论】:
-
首先你为什么不做
marksheet.append((name, score))你不需要构建一个螺柱列表。进一步 for _ in range(int(raw_input()) 似乎是错误的,这是否有效?很可能你会得到一个 ValueError。 -
它是 python 2.7,for 循环工作得很好。 10 个测试用例中有 8 个正在工作。问题链接:hackerrank.com/challenges/nested-list/problem
-
作为初学者,您为什么要使用 python 2.7?它将在 4 个月内变得不受支持并过时。我强烈建议迁移到 python 3.7
-
好的,先生,感谢您的帮助。
标签: python list nested-lists