我是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(),但我认为它不适用于对象。有任何想法吗?
答案 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
非常感谢您对所有人的帮助。