Сортировка вложенного списка на основе числовой части строкового элемента

#python #sorting

#python #сортировка

Вопрос:

У меня есть:

 l = [['T182', 'XXX-0'], ['S41', 'Q8BFU2-0']]
 

Я хочу:

 [['S41', 'Q8BFU2-0'], ['T182', 'XXX-0']]
 

Мое текущее решение — создать новый вложенный список:

 i = [['T', '182', 'XXX-0'], ['S', '41', 'Q8BFU2-0']]
 

Что позволяет мне легко получить мой результат, хотя и не используя оптимальный способ.

Я хочу l применить числовую сортировку к этому вложенному списку на основе числовой части первого элемента каждого подсписка.

Это без восстановления вложенного списка.

Ответ №1:

предполагая, что элементы следуют шаблону один символ плюс целое число, вы могли бы сделать это:

 res = sorted(l, key=lambda x: int(x[0][1:]))
 

x[0] выбирает первые элементы ваших подсписков; x[0][1:] выбирает все, кроме первого символа. то, что останется, будет преобразовано в целое число и использовано как key for sorted .