Сортировка списка по возрастанию значения числа в Python
Создайте класс объектов Auto для подержанных машин со следующими характеристиками:
Марка.
Модель.
Год производства.
Пробег.
Цена.
Отечественное или зарубежное производство.
Создайте 5 объектов со следующими характеристиками: KiaSor: «Kia», «Sorrento», 2003, 223 000 км, 415 000 руб, производство: Россия HyunSol: «Hyundai», «Solaris», 2015, 41 000 км, 869 000 руб, производство: Корея VolkPas: «Volkswagen», «Passat», 2012, 127 000 км, 900 000 руб производство: Германия LadaPri: «Lada», «Priora», 2011, 139 000 км, 150 000 руб, производство: Россия UazPat: «UAZ», «Patriot», 2011, 150 000 км, 345 400 руб, производство: Россия
Создайте функцию, в результате которой возникнет список sortedByMileage, в котором содержатся все автомобили, рассортированные по пробегу ['Hyundai Solaris', '41000'], ['Volkswagen Passat', '127000'], ['Lada Priora', '139000'], ['UAZ Patriot', '150000'], ['Kia Sorrento', '223000']
У меня получается сортировка по возрастанию 1 2 3, а надо значения 41тыс. 127тыс.
[['Volkswagen Passat', '127000'], ['Lada Priora', '139000'], ['UAZ Patriot', '150000'], ['Kia Sorrento', '223000'], ['Hyundai Solaris', '41000']]
```
class Auto:
def __init__(self, make, model, year, mileage, price, origin_ru):
self.make= make
self.model= model
self.year= year
self.mileage= mileage
self.price= price
self.orign_ru= origin_ru
def getMake(self):
return self.make
def getModel(self):
return self.model
def getYear(self):
return self.year
def getMileage(self):
return self.mileage
def getPrice(self):
return self.price
def getOrign_ru(self):
return self.origin_ru
def makeModel(self):
print('{} {}'.format(self.make, self.model))
def getAttrValue(self, attr):
return getattr(self, attr)
def __repr__(self):
def __repr__(self):
return f'{self.make}{self.model} - Price: RUR{self.price},Production Year: {self.year},Mileage: {self.mileage}'
KiaSor= Auto('Kia', 'Sorrento', 2003, 223000, 415000, 'Россия')
HyunSol= Auto('Hyundai', 'Solaris', 2015, 41000, 869000, 'Корея')
VolkPas= Auto('Volkswagen', 'Passat', 2012, 127000, 900000, 'Германия')
LadaPri= Auto('Lada', 'Priora', 2011, 139000, 150000, 'Россия')
UazPat= Auto('UAZ', 'Patriot', 2011, 150000, 345400, 'Россия')
sortedByMileage=[]
sortedByMileage1=['{} {}'.format(KiaSor.make, KiaSor.model),'{}'.format(KiaSor.mileage)]
sortedByMileage2=['{} {}'.format(HyunSol.make, HyunSol.model), '{}'.format(HyunSol.mileage)]
sortedByMileage3=['{} {}'.format(VolkPas.make, VolkPas.model), '{}'.format(VolkPas.mileage)]
sortedByMileage4=['{} {}'.format(LadaPri.make, LadaPri.model), '{}'.format(LadaPri.mileage)]
sortedByMileage5=['{} {}'.format(UazPat.make, UazPat.model), '{}'.format(UazPat.mileage)]
sortedByMileage=[sortedByMileage1,sortedByMileage2,sortedByMileage3,sortedByMileage4,sortedByMileage5]
def custom_key(sortedByMileage):
return sortedByMileage[1]
sortedByMileage.sort(key=custom_key)
print (sortedByMileage)
```
Ответы (1 шт):
вам нужна сортировка лямбда функцией. В данном случае список groupx будет отсортирован по значению x.price В принципе подставив туда любой другой параметр объекта можно сортировать и по другим основаниям.
sorted(groupx, key lambda x: x.price, reverse=True)