Сортировка списка по возрастанию значения числа в Python

  1. Создайте класс объектов Auto для подержанных машин со следующими характеристиками:

  2. Марка.

  3. Модель.

  4. Год производства.

  5. Пробег.

  6. Цена.

  7. Отечественное или зарубежное производство.

  8. Создайте 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 руб, производство: Россия

  9. Создайте функцию, в результате которой возникнет список 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)
→ Ссылка