Как найти максимальные числа (не одно а несколько)?

Дана строка, содержащая последовательность латинских слов, разделенных пробелами. Определить букву, встречающуюся в словах чаще всех остальных. Если такая буква не одна, то вывести первую в алфавитном порядке. Вот что уже есть

txt = input("Введите текст: ")
mass = []
stxt = []
for i in txt:
    if i not in stxt:
        stxt.append(i)
for i in stxt:
    mass.append(txt.count(i))

mmax = mass.index(max(mass))

В конце я получаю индекс максимального числа. Но если там не одно такое число то он просто берет первое, а мне надо брать все из них. мах так не может есть ли другие способы


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

Автор решения: n1tr0xs
text = input('Введите текст: ') # ввод текса
letters = set(text) # делаем множество
letters.remove(' ') # пробел не буква - удаляем

letter_count = list()
for letter in letters:
    # (буква, кол-во вхождений)
    letter_count.append((letter, text.count(letter)))
# сортируем по убыванию частоты и возрастанию по порядку в алфавите
letter_count.sort(key=lambda x: (-x[1], x[0]))
print(letter_count[0])

Сократим код:

text = input('Введите текст: ')
letters = set(text).difference({' '})
letter_count = sorted([(letter, text.count(letter)) for letter in letters],
                      key=lambda x: (-x[1], x[0]))
print(letter_count[0])

И еще короче

text = input('Введите текст: ')
letter_count = sorted([(letter, text.count(letter)) for letter in set(text).difference({' '})],
                      key=lambda x: (-x[1], x[0]))
print(letter_count[0])
→ Ссылка
Автор решения: SergFSM

У функции max() есть необязательный аргумент key. Для вашего примера ключом будет функция count. А чтобы "Если такая буква не одна, то вывести первую в алфавитном порядке" можно строку сначала отсортировать. Примерно так:

txt = input("Введите текст: ")
print(max(sorted(txt), key=txt.count))
'''

Введите текст: ddd ss aaa
'a'

Ну а если пробелы учитывать не надо, то от них можно избавиться с помощью replace

→ Ссылка