


Сортировка Python ID подобия A.B.C.D через key = tuple(4 выражения через запятую)
Задача моего вопроса усложнить ДАННЫЙ КОД В сортировку через ключ,чтобы сортировало по 4-ем критериям!!!!!:
ID = a.b.c.d
1)a по возрастанию , далее если a одинаковые ,то
2)b по возрастанию , далее если b одинаковые , то
3)c по возрастанию , далее если b одинаковые , то
4)b по возрастанию. Конец
Задача снизу это сортировка по одному параметру (A.b.c.d) только по A. Я хочу усложнить, но ничего не выходит. Такое решить мне пока не под силу.
Я нахожусь на новичковом этапе, и безумно интересно как сделать то, что я хочу.
id_list = [['128', '199', '44', '24'], ['128', '199', '201', '245'], ['143', '198', '168', '95'], ['172', '67', '181', '62'], ['172', '67', '222', '111'], ['172', '67', '10', '90'], ['45', '8', '106', '59'], ['203', '13', '32', '156'], ['172', '67', '181', '194']]
def gem(word):
return list(map(lambda x: int(x), word))
res_list = sorted(id_list, key=gem)
for i in res_list:
print(*i, sep='.')
id_list = [['128', '199', '44', '24'], ['128', '199', '201', '245'], ['143', '198', '168', '95'], ['172', '67', '181', '62'], ['172', '67', '222', '111'], ['172', '67', '10', '90'], ['45', '8', '106', '59'], ['203', '13', '32', '156'], ['172', '67', '181', '194']]
def gem(word):
a, b, c, d = map(int, word)
return (a, b, c, d)
res_list = sorted(id_list, key=gem)
for i in res_list:
print(*i, sep='.')
Ещё раз.. тут НЕ надо сортировать по 4-м критериям отдельно. Тут надо преобразовать наборы цифр в одно число и сортировать по нему. Арифметика потому что:

Стоит вам взять адрес вида 192.168.2.2 и третье слагаемое сразу же станет 2*256 (вместо 1*256), т.е. общая сумма будет на 256 больше, чем для адреса 192.168.1.2.
Но если вы измените число 168 на 167, то сумма изменится на 256^2 и "перекроет" собой любые возможные изменения в последних октетах.
Если фундаментально, то это просто полином вроде:

Абсолютно фиолетово сколько там элементов. Если у нас х больше, чем максимальное значение любого из коэффициентов, то любое произведение k*x^n будет больше ki*x^(n-1). Именно так можно произвести сортировку по любому количеству критериев.
Вот, например, возьмём 10 критериев, ограничим их значениями от 0 до 9 и разложим в:

В результате сортировки по этой сумме получим(исходный случайный список, конечный список):
