Ваша проблема проистекает из того факта, что алфавитная сортировка делает не то, что вы хотите (найти 10.x «меньше», чем 5.x). Поэтому вам нужно передать функцию, которая преобразует строку IP-адреса в числа, чтобы эта функция следовала вашей интуиции о том, что должно произойти первым.
Решение: Сначала я создам тип для IP, где я буду анализировать строку на 4 группы и порт и сравнивать их на основе этих кортежей (см. Сортировку кортежей python).
from collections import namedtuple
ip_type = namedtuple("IP", 'g1 g2 g3 g4 port')
def to_ip(string: str) -> ip_type:
groups, port = string.split('/')
g1, g2, g3, g4 = [int(g) for g in groups.split('.')]
return ip_type(g1, g2, g3, g4, int(port) )
array = [ '1.1.1.1/24',
'1.1.1.1/32',
'10.10.11.12/26',
'10.11.10.4/32',
'5.5.5.5/20' ]
print(sorted(array, key=to_ip))