Python

Питон 3 решите задачку пожалуйста

Самая частая буква
Дана строка, возможно, содержащая пробелы. Определите, какая буква латинского алфавита (или какие буквы) в этой строке встречается чаще всего. При решении этой задачи заглавные и строчные буквы считаются одинаковыми, а прочие символы, не являющиеся буквами, не учитываются.
При решении этой задачи нельзя пользоваться вложенными циклами. Входная строка должна обрабатываться за один проход.
Входные данные
Дана непустая строка.
Выходные данные
Программа должна вывести в первой строке все буквы, которые встречаются чаще всего в исходной строке. Выводить буквы необходимо в заглавном написании, в алфавитном порядке, без пробелов. Во второй строке выведите единственное число — сколько раз в данной строке встречаются эти буквы.
Примеры
Ввод
- We all live in the Yellow Submarine!
Вывод
EL
5
S8
Sherzod 878787
406
Держи:
 from collections import Counter
from itertools import takewhile
mc = Counter(map(str.upper, filter(str.isalpha, input()))).most_common()
tc = mc[0][1]
print(*sorted(l for l, c in takewhile(lambda t: t[1] == tc, mc)), sep = '')
print(tc)

И входная строка-то, конечно, обрабатывается за один проход, но по результату обработки всё равно нужен ещё один проход для определения максимальной частоты, а потом - ещё отдельно сортировка топовых букв.
Viorel&karolina Druc
Viorel&karolina Druc
87 571
Лучший ответ
 from collections import Counter 
import string

def most_common_letter(s):
# Преобразуем входную строку в нижний регистр и удаляем символы, не являющиеся буквами
s = ''.join(filter(str.isalpha, s.lower()))
# Считаем количество вхождений каждой буквы
counts = Counter(s)
# Находим максимальное количество
max_count = max(counts.values())
# Находим буквы с максимальным количеством
most_common_letters = sorted([letter for letter, count in counts.items() if count == max_count])
# Преобразуем буквы в верхний регистр и объединяем их в строку
most_common_letters_str = ''.join(most_common_letters).upper()
# Возвращаем результат
return most_common_letters_str, max_count

# Пример использования
s = 'We all live in the Yellow Submarine!'
most_common_letters, count = most_common_letter(s)
print(most_common_letters)
print(count)
Этот код использует класс collections.Counter для подсчета количества вхождений каждой буквы во входной строке. Функция filter используется для удаления символов, не являющихся буквами, из входной строки. Функция max используется для поиска максимального количества, а списковое выражение используется для поиска букв с максимальным количеством. Наконец, функция sorted используется для сортировки букв в алфавитном порядке, а метод join используется для объединения их в строку.