在对象数组中查找特定变量的最大值

时间:2019-01-20 02:50:12

标签: python python-3.x

我是python的新手。我有一个名为Student的对象,其变量student_id和成绩。在主类中,我可以设置student_id和grade的值。主类中还有一个名为Classroom的数组,我可以在其中存储Student的实例。我放置了4个Student实例,它们具有不同的student_id和grade值。 现在,我想返回最高分数的student_id的值。

我尝试使用下面的代码对Classroom数组进行排序。

Classroom.sort(key=lambda y: y.grades, reverse=True)

评分最高的对象位于第一个元素中,评分最低的对象位于最后一个元素中。有了这个,我总是可以总是返回第一个元素,但是我不想重新排列数组。

我也在考虑使用max(),但我认为它不适用于对象。有任何想法吗?

2 个答案:

答案 0 :(得分:1)

您可以使用sorted()代替list.sort()。前者创建一个新的,已排序的列表,而后者则对现有数组进行排序。

>>> numbers = [5, 4, 3, 2, 1]
>>> sorted(numbers)
[1, 2, 3, 4, 5]
>>> print(numbers)
[5, 4, 3, 2, 1]
>>> numbers.sort()
>>> print(numbers)
[1, 2, 3, 4, 5]

但是您可以使用sorted()来代替max()的第一个元素,sorted()接受一个关键参数,类似于list.sort()max_student = max(Classroom, key=lambda y: y.grades) 的用法。

Triangle

答案 1 :(得分:0)

这在我的代码中有效:

BestStudent = max(Classroom, key=lambda y: y.grades).student_id

非常感谢您对所有人的帮助。