Я бы хотел отсортировать список строк в порядке убывания их длины. Если имеется 2 или более строк одинаковой длины, порядок должен быть лексикографическим в порядке возрастания.
Input: ['a', 'bb', 'cc', 'ddd', 'bbc']
Expected Output: ['bbc', 'ddd', 'bb', 'cc', 'a']
В приведенном выше примере: список упорядочен в порядке убывания длины строк. Но так как длина строк 'bb' и 'cc' одинакова, они упорядочены лексикографически (в порядке возрастания).
У меня есть функция -
sorted(sample_list, key=lambda x: (len(x), x), reverse=True)
Однако x в лямбда-функции дает дополнительный параметр (в случае, если len(x)
совпадает). Но так как я установил reverse=True
, он сортирует строку в убывающем лексикографическом порядке, а не по возрастанию (когда len (x) равен).
Observed output from above code: ['ddd', 'bbc', 'cc', 'bb', 'a']
Я не Не знаю, какие изменения я могу внести в лямбда-функцию, чтобы приспособиться к этому условию.
Ссылки: