Перемещение в последних версиях Python для передачи ключевой функции в sort()
из предыдущей функции cmp делает меня более сложным для выполнения сложных видов на определенных объектах.
Например, я хочу сортировать набор объектов от самых новых до самых старых, с набором полей тай-брейка. Поэтому я хочу, чтобы даты были в обратном порядке, но строки в их естественном порядке. С помощью функции сравнения я могу просто изменить сравнение поля даты по сравнению со строковыми полями. Но с ключевой функцией мне нужно найти способ инвертировать/изменить либо даты, либо строки.
Легко (хотя и некрасиво) делать с цифрами - просто вычтите их из чего-то - но мне нужно найти подобный хак для дат (вычесть их из другой даты и сравнить timedeltas?) и строки (... я не знаю, как бы я изменил их порядок независимо от языка).
Я знаю о существовании functools.cmp_to_key()
, но он описан как "в основном используемый в качестве инструмента перехода для программ, преобразованных в Python 3, где функции сравнения больше не поддерживаются". Это означает, что я должен иметь возможность делать то, что хочу с помощью ключевого метода, но как?