Сортировка лямбдой со многими параметрами

Нужно отсортировать список кортежей. И суть в том, что если, например, числа равны, то сортировать нужно в лексикографическом порядке. Я видел вот такую штуку, но я не понял как это работает.

sorted(domens.items(), key=lambda x: (x[1], x[0])):

Как я понял, кортеж в лямбде - это выбор элемента сортировки в случае равенства. Вот данные для сортировки:

data = [('outlook.com', 34), ('list.ru', 29), ('yahoo.com', 36), ('bk.ru', 38), ('mail.ru', 38), ('rambler.ru', 24), ('iCloud.com', 29), ('internet.ru', 32), ('inbox.ru', 31), ('yandex.ru', 34), ('gmail.com', 44), ('aol.com', 31)]

Ответы (1 шт):

Автор решения: Сергей

Вообще-то, вы уже всё сделали, кроме последнего крошечного шага. Да и большую часть поняли, судя по вопросу. Осталось в "штуку" вставить data.
На будущее: не бойтесь экспериментировать, в процессе и разберётесь!

Короткое пояснение:
Этот конкретный ключ для сортировки сначала сортирует по первому элементу (по числам), а потом (при равенстве) по нулевому элементу (по строкам) лексикографически. lambda же обеспечивает "бег" по всему списку.

data = [('outlook.com', 34), ('list.ru', 29), ('yahoo.com', 36), ('bk.ru', 38), ('mail.ru', 38), ('rambler.ru', 24),\
    ('iCloud.com', 29), ('internet.ru', 32), ('inbox.ru', 31), ('yandex.ru', 34), ('gmail.com', 44), ('aol.com', 31)]
a = sorted(data, key=lambda x: (x[1], x[0]))
print (a)

Результат:
[('rambler.ru', 24), ('iCloud.com', 29), ('list.ru', 29), ('aol.com', 31), ('inbox.ru', 31), ('internet.ru', 32), ('outlook.com', 34), ('yandex.ru', 34), ('yahoo.com', 36), ('bk.ru', 38), ('mail.ru', 38), ('gmail.com', 44)]

→ Ссылка