Сортировка списка кортежей Python

Нужно отсортировать список из кортежей по лексикографическому порядку(по алфавиту), но с учетом 2го параметра.

Имеется список:

('my', 2)
('ding', 2)
('oh', 1)
('you', 1)
('touch', 1)
('tralala', 1)
('mmm', 1)
('dong', 1)

его надо отсортировать по i[0], но сохранив порядок 2го значения. т.е. должно получиться:

ding
my
dong
mmm
oh
touch
tralala
you

я понимаю что должно что-то использоваться типа sort where i[1] == и так далее, но что-то не придумывается.

Спасибо.


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

Автор решения: Beer And Bear

Входные данные:

oh you touch my tralala
mmm my ding ding dong

Код, который сортирует слова в порядке неубывания + в лексографическом (алфавитном) порядке.

descriptor = open('input.txt', 'r', encoding='utf8')
myDict = dict()
for stroka in descriptor:
    for bukva in stroka.split():
        if myDict.get(bukva, 0) == 0:
            myDict[bukva] = 1
        else:
            x = myDict[bukva] + 1
            myDict[bukva] = x
            x = 0
myDict2 = sorted(myDict)
temp1 = sorted(myDict2, key=lambda x: myDict[x], reverse=True)
for i in temp1:
    print(i)

Результат:

ding
my
dong
mmm
oh
touch
tralala
you
→ Ссылка