Python сортирует список по длине значения в кортеже
у меня возникли трудности с сортировкой списка кортежей. Я хотел бы отсортировать по длине строки в списке.
например:
l = [(99,'bbc', 121),(33,'abcd', 231),(44,'zb', 148), (23,'abcde',221)]
Если я сортирую по элементу 1:
l.sort(key=itemgetter(1), reverse=True)
это будет сортировать по алфавитному ранжированию строк, а не по длине. Я бы предпочел сортировать на месте и обратный сортировку, сначала с самой длинной строкой.
Я могу использовать лямбду и cmp,
l.sort(lambda x,y: cmp(len(x[1]), len(y[1])), reverse=True)
но есть ли более элегантный или подходящие для Python способ использование ключа и / или itemgetter?
1 ответов
Ну вы можете сделать лямбда проще:
l.sort(key=lambda t: len(t[1]), reverse=True)
кроме того, не используйте list
как имя переменной; оно уже принято встроенной функцией.