В Python у меня есть что-то вроде следующего (хотя и случайным образом):
l = [('a', 'x'),
('a', 'y'),
('a', 'z'),
('b', 'x'),
('b', 'y'),
('b', 'z'),
]
Если я вызываю sorted (l)
, я получаю отсортированный результат ( как указано выше), чего и следовало ожидать. Однако мне нужно выполнить прямую сортировку для первого элемента кортежа и обратную сортировку для второго элемента. Другими словами, мне нужен следующий результат:
l = [('a', 'z'),
('a', 'y'),
('a', 'x'),
('b', 'z'),
('b', 'y'),
('b', 'x'),
]
В Python2.x существует параметр cmp
, который можно передать в sorted ()
для достижения этого результата, но В Python3 этого больше нет. У него есть только ключевой параметр
. Есть ли способ достичь желаемого порядка сортировки, используя только параметр key
?
Я знаю, что могу определить целый новый класс для упаковки моих кортежей или использовать что-то вроде functools.cmp_to_key
(который также создает класс-оболочку), но все это кажется тяжелым для такой простой операции. Нет ли другого выхода?
edit: Я должен добавить, что все строки не будут односимвольными и что в некоторых случаях список кортежей содержит не строковые данные [т.е. (базовая строка, дата и время)].