python - 如何对以 float 作为列表中的元素的嵌套列表进行排序?

标签 python list sorting python-3.6 nested-lists

所以目前我正在学习如何在 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 循环内。最后,我试图让它打印成绩第二低的学生,但不太确定如何去做。有什么建议么? (我已经尝试了很多行带有排序函数的代码,但总是出现某种错误,例如 <floatstr 实例之间不支持 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/

相关文章:

Python 摩尔斯电码 : S. O.S

python - 贪心算法的汽车加油问题(列表索引超出范围)

java - 如果 ArrayList 的大小已传递给构造函数,则添加新元素时,Java 中 ArrayList 的元素是否会在内存中重新分配?

java - 如何将我的随机值放入java中的数组中?

sorting - 如何在 dart/Flutter 中使用 SplayTreeMap on Firebase 快照字典?

python - 如果选中复选框,则在列表中添加值 Python

python - 将范围值转换为整数

python - 如何连接到rabbitMQ docker容器?

Python:更改函数内的全局变量和全局列表元素

python - 使用索引数组跨多个轴重新排序 numpy 数组的最快方法