Использование классов для сортировки списков
Автор:admin Дата: 16 сентября 2020 г.Использование классов для сортировки
from operator import itemgetter, attrgetter, methodcaller class Student(): def __init__(self,name,age,height,points): self.name = name self.age = age self.height = height self.points = sum(map(int,points.split())) def __str__(self): return self.name + ' '+ str(self.age) + ' ' + str(self.height) + ' ' + str(self.points) # или так: #return ' '.join(map(str,(self.name,self.age,self.height,self.points))) source_data = [ ('Вася','25 лет','175 см','10 21 12'), ('Маша','12 лет','125 см','20 22 30'), ('Маша','11 лет','126 см','30 23 20'), ('Маша','10 лет','127 см','40 24 50'), ('Игорь','13 лет','180 см','50 25 20'), ('Катя','25 лет','165 см','60 26 24'), ('Катя','26 лет','175 см','70 27 23'), ('Катя','27 лет','172 см','80 28 32'), ('Катя','28 лет','171 см','90 29 30'), ('Катя','28 лет','172 см','90 29 30'), ('Катя','28 лет','173 см','90 29 30'), ('Катя','28 лет','174 см','90 29 30'), ] data = [] for x in source_data: data.append(Student(*x)) print('сортировка по имени') for x in sorted(data,key=attrgetter('name')): print(x) print() print('сортировка по возрасту') for x in sorted(data,key=attrgetter('age')): print(x) print() print('сортировка по росту') for x in sorted(data,key=attrgetter('height')): print(x) print() print('сортировка по имени, внутри имени по росту') for x in sorted(data,key=attrgetter('name','height')): print(x) print() print('сортировка по росту, внутри по имени, внутри по возрасту') for x in sorted(data,key=attrgetter('height','name','age')): print(x) print()