Python 如何将浮动作为列表中的元素对嵌套列表进行排序?
因此,目前我正在学习如何在HackerRank上编写代码,其中一个问题是返回成绩第二低的学生的姓名。它是一个嵌套列表,名称(类型字符串)和分数(浮动)作为子列表的一部分。例如:Python 如何将浮动作为列表中的元素对嵌套列表进行排序?,python,list,sorting,python-3.6,nested-lists,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”。编译器中给出的代码是 如果uuuu name
students = [
['Harry', 37.21],
['Berry', 37.21],
['Tina', 37.2],
['Akriti', 41],
['Harsh', 39]
]
根据上面的列表,正确答案将返回“Harry”和“Berry”。编译器中给出的代码是
如果uuuu name_uuuu=='\uuuuuuu main\uuuuuu':
对于范围内的(int(input()):
名称=输入()
分数=浮动(输入()`
我在给出的代码之后添加的代码是students=[]
(在之后,如果{uuuuu name}uuuuuuu=''uuuu main}:
)students.append([name,score])
在for循环中。最后,我试图让它打印的学生与第二最低的成绩,但并不真的知道如何去做。有什么建议吗?(我尝试了许多带有排序函数的代码行,但总是出现某种错误,例如,您可以使用带有键的sort()
函数,该键告诉它使用内部每个列表的第二个元素进行排序
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]
一种更好、更有效的方法是在值进入堆时将其推入堆中,然后在取出值时,它们已按排序顺序排列。如果您很聪明,您将使用此事实在该问题中只排序一次,并提前完成该问题
从heapq导入heappush
学生_分数=[]
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
对于范围内的(int(input()):
名称=输入()
分数=浮动(输入()
heappush(学生分数,(分数,姓名))
['Harry', 37.21]