#python
#python
Вопрос:
Я сортирую список сервисов на основе отсортированного списка избранных типов сервисов
У меня есть функция sortingServices, которая должна принимать список сервисов и список избранных типов (из пользовательского объекта), и она должна возвращать список отсортированных объектов сервисов.
class User :
def __init__(self, id, rates):
self.id = id
self.rates = rates
user1 = User(123 , ["Education" , "food" , "shopping","A"])
class Service :
def __init__(self,id,body,type,fees):
self.id = id
self.body= body
self.type=type
self.fee = fees
service1 = Service(123,"gh","food",12)
service2 = Service(123,"gh","Education",12)
service3 = Service(123,"gh","shopping",12)
service4 = Service(123,"gh","Education",12)
service5 = Service(123,"gh","Education",12)
service6 = Service(123,"gh","shopping",12)
service7 = Service(123,"gh","A",12)
Services= [service1,service2,service3,service3 ,service4,service5,service6,service7]
def sortingServices (services ,user):
sorted(long_list, key=lambda e: (short_list.index(e),e) if e in short_list else (len(short_list),e))
sortingServices(Services , user1)
вывод должен быть :
Services = [service2 , service4 ,service5 , service1 , service3 , service6 , service7 ]
Комментарии:
1. Где это
long_list
иshort_list
определено?2. long_list =[service1,service2,service3,service3,service4, service5,service6, service7]
3. short_list = [«Образование», «еда», «покупки»,»A»]
Ответ №1:
Вам нужно проверить, Service.type
находится ли он в User.rates
, и использовать этот индекс.
Пример:
Class User :
def __init__(self, id, rates):
self.id = id
self.rates = rates
user1 = User(123 , ["Education" , "food" , "shopping","A"])
class Service :
def __init__(self,id,body,type,fees):
self.id = id
self.body= body
self.type=type
self.fee = fees
service1 = Service(1,"gh","food",12)
service2 = Service(2,"gh","Education",12)
service3 = Service(3,"gh","shopping",12)
service4 = Service(4,"gh","Education",12)
service5 = Service(5,"gh","Education",12)
service6 = Service(6,"gh","shopping",12)
service7 = Service(7,"gh","A",12)
Services= [service1,service2,service3,service4,service5,service6,service7]
def sortingServices (long_list ,short_list):
return sorted(long_list, key=lambda e: short_list.index(e.type) if e.type in short_list else len(short_list))
for i in sortingServices(Services , user1.rates):
print(i.id)
Вывод:
2
4
5
1
3
6
7
Комментарии:
1. Большое вам спасибо .