Сортировка списка кортежей 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