created_date: date
                  
                  
                      name: str
                  
                  
                  
                  
                  
                  # и, соответственно список из них
                  
                  
                  
                  
                  
                  hello_list = [
                  
                  
                      Hello(name='a', created_date=datetime.date(2023, 11, 22)), 
                  
                  
                      Hello(name='b', created_date=datetime.date(2023, 11, 21)), 
                  
                  
                      Hello(name='c', created_date=datetime.date(2023, 11, 24))
                  
                  
                  ]
                  
                  
                  
                  
                  
                  теперь я хочу сделать сортировку, сначала по дате по убыванию, а потом по имени по возрастанию и тут я не совсем понимаю могу ли я это сделать
                  
                  
                  from operator import attrgetter
                  
                  
                  hello_list.sort(key= attrgetter("created_time", "name"), reverse=True)
                  
                  
                  
                  
                  
                  но так у меня будет по обоим полям asc или desc, а как сделать по первому desc, а по второму asс?
                  
                  
                
Примено так: class ReversedSort: def __init__(self, obj): self.obj = obj def __lt__(self, other): return self.obj > other.obj def __eq__(self, other): return self.obj == other.obj hello_list.sort(key=lambda x: (ReversedSort(x.created_time), x.name))
Обсуждают сегодня