所以目前我正在学习如何在 HackerRank 上编码,它提出的问题之一是返回成绩第二低的学生的姓名。它是一个嵌套列表,其中名称(字符串类型)和分数(浮点型)作为子列表的一部分。所以一个例子是:
students = [
['Harry', 37.21],
['Berry', 37.21],
['Tina', 37.2],
['Akriti', 41],
['Harsh', 39]
]
根据上面的列表,正确答案将返回“Harry”和“Berry”。编译器中给出的代码是
if __name__ == '__main__':
for _ in range(int(input())):
name = input()
score = float(input())`
我在给出的代码之后添加的代码是 students = []
(if __name__ == '__main__':
之后)students.append([name, score])
在 for 循环内。最后,我试图让它打印成绩第二低的学生,但不太确定如何去做。有什么建议么? (我已经尝试了很多行带有排序函数的代码,但总是出现某种错误,例如 <
和 float
或 str
实例之间不支持 float
对象不可迭代或无法转换字符串 float ,反之亦然。,抱歉,因为我尝试了很多不同的代码行,所以我不记得哪个代码抛出了哪个错误)首先,抱歉这个问题已经被问到,我查找了几个与我的问题类似的不同问题我在问,但仍然找不到真正的答案。其次,抱歉,如果我看起来像是在咆哮或提示,但我已经被这个问题困扰了一段时间,而且它变得令人沮丧,因为如果我被困在几行代码中,如果我看到程序值得代码。第三,感谢您的帮助。
最佳答案
您可以将 sort()
函数与 key
一起使用,该函数告诉它使用内部每个列表的第二个元素进行排序。
students = [['Harry', 37.21], ['Berry', 37.21], ['Tina', 37.2], ['Akriti', 41], ['Harsh', 39]]
students.sort(key = lambda x : x[1])
# students = [['Tina', 37.2], ['Harry', 37.21], ['Berry', 37.21], ['Harsh', 39], ['Akriti', 41]]
print(students[1])
输出:
['Harry', 37.21]
关于python - 如何对以 float 作为列表中的元素的嵌套列表进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47090088/