Python嵌套列表请帮忙

时间:2017-10-27 17:28:26

标签: python list

def get_grades(grades: List[list]) -> int:
    """Return the name of the student that has the highest grade.
    If there is a tie for the highest grade, it should return the name that appears
    first in grades."""

我的数据集是列表,例如

GRADES = [['Todd', 'Biology', 67, 5], ['Ben', 'Chemistry', '88', 7]]

此处,等级位于每个子列表的索引2处。

我该怎么做?

2 个答案:

答案 0 :(得分:3)

你可以试试这个

lst=[['susan', 'adams' , 67, 004], ['garret', 'jimmy', 88, 9]]
max(lst, key=lambda i: i[2])[0]

输出

>>> lst=[['susan', 'adams' , 67, 004], ['garret', 'jimmy', 50, 9]]
>>> max(lst, key=lambda i: i[2])[0]
'susan'

内置函数max可以使用键函数参数来帮助它做出决定。它的工作方式与Sorting How To中描述的排序键功能相同。

答案 1 :(得分:0)

这将返回所有获得最高成绩的名字的列表:

info = [['susan', 'adams' , 67, 4], ['garret', 'jimmy', 88, 9], ['stack', 'overflow', 88, 11]]
max_grade = max(person[2] for person in info)
max_persons = [person[0] for person in info if person[2] == max_grade]

如果info不是空列表,max_persons[0]将始终包含其中一个获得最高成绩的人的姓名