Сортировка списка с именованными атрибутами не реализуется

Рейтинг: 0Ответов: 1Опубликовано: 17.06.2023
class Student:

    def __init__(self, full_name, group_number, progress):
        self.full_name = full_name
        self.group_number = group_number
        self.progress = progress

    def __repr__(self):
        return repr((self.full_name, self.group_number, self.progress))


student_objects = [
    Student('john', 1, 3),
    Student('Andrew', 2, 5),
    Student('dave', 3, 2),
]
sorted(student_objects, key=lambda student: student.progress)  # сортируем по оценкам
print(student_objects)
sorted(student_objects, key=lambda student: student.full_name)
print(student_objects)

Вывод:

[('john', 1, 3), ('Andrew', 2, 5), ('dave', 3, 2)]
[('john', 1, 3), ('Andrew', 2, 5), ('dave', 3, 2)]

Подскажите, пожалуйста, почему не реализуется сортировка?

Ответы

▲ 2Принят

Все реализуется, просто вы не присваиваете результаты к переменным:

class Student:
    def __init__(self, full_name, group_number, progress):
        self.full_name = full_name
        self.group_number = group_number
        self.progress = progress
    def __repr__(self):
        return repr((self.full_name, self.group_number, self.progress))

student_objects = [
    Student('john', 1, 3),
    Student('Andrew', 2, 5),
    Student('dave', 3, 2),
]

student_objects = sorted(student_objects, key=lambda student: student.progress)  # сортируем по оценкам
print(student_objects)
student_objects = sorted(student_objects, key=lambda student: student.full_name)
print(student_objects)

Результат:

[('dave', 3, 2), ('john', 1, 3), ('Andrew', 2, 5)]
[('Andrew', 2, 5), ('dave', 3, 2), ('john', 1, 3)]