как бы вы отсортировали этот список интерфейсов маршрутизатора?

#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() or sorted() .

Ответ №1:

Вы сортируете списки строк, но хотите отсортировать их как списки целых чисел.