#python #python-3.x #list #sorting
#python #python-3.x #Список #сортировка
Вопрос:
Я попытался отсортировать этот список с помощью
sorted(list_of_interfaces, key = lambda x:x.split(':')[0].split('/')[2])
однако я не получаю желаемого результата.
В принципе, за первыми интерфейсами должны xe-0/0/0:0
следовать xe-0/0/0:1
, xe-0/0/0:2
и xe-0/0/0:3
. Оттуда должен быть следующий интерфейс xe-0/0/1:0
и так далее. По какой-то причине мой код помещается xe-0/0/10
сразу после xe-0/0/1
, как показано ниже. Есть предложения?
xe-0/0/0:3
xe-0/0/0:2
xe-0/0/0:1
xe-0/0/0:0
xe-0/0/1:1
xe-0/0/1:3
xe-0/0/1:0
xe-0/0/1:2
xe-0/0/10:0
xe-0/0/10:3
xe-0/0/10:1
xe-0/0/10:2
xe-0/0/11:2
xe-0/0/11:1
xe-0/0/11:3
xe-0/0/11:0
xe-0/0/12:2
xe-0/0/12:1
xe-0/0/12:0
xe-0/0/12:3
xe-0/0/13:2
xe-0/0/13:3
xe-0/0/13:1
xe-0/0/13:0
xe-0/0/14:1
xe-0/0/14:0
xe-0/0/14:3
xe-0/0/14:2
xe-0/0/15:2
xe-0/0/15:0
xe-0/0/15:1
xe-0/0/15:3
xe-0/0/2:1
xe-0/0/2:3
xe-0/0/2:0
xe-0/0/2:2
xe-0/0/3:1
xe-0/0/3:2
xe-0/0/3:3
xe-0/0/3:0
xe-0/0/4:2
xe-0/0/4:3
xe-0/0/4:0
xe-0/0/4:1
xe-0/0/5:1
xe-0/0/5:0
xe-0/0/5:2
xe-0/0/5:3
xe-0/0/6:1
xe-0/0/6:0
xe-0/0/6:3
xe-0/0/6:2
xe-0/0/7:1
xe-0/0/7:0
xe-0/0/7:2
xe-0/0/7:3
xe-0/0/8:0
xe-0/0/8:1
xe-0/0/8:3
xe-0/0/8:2
xe-0/0/9:1
xe-0/0/9:0
xe-0/0/9:2
xe-0/0/9:3
Комментарии:
1. Напишите функцию, которая принимает один элемент и возвращает кортеж из частей этого элемента, где числа являются целыми числами (
'xe-0/0/0:3'
->('xe', 0, 0, 0, 3)
). Затем укажите эту функцию в качествеkey
ключевого аргумента функцииsort()
orsorted()
.
Ответ №1:
Вы сортируете списки строк, но хотите отсортировать их как списки целых чисел.