Частотный анализ

Что нужно сделать

Есть файл text.txt, который содержит текст. Напишите программу, которая выполняет частотный анализ, определяя долю каждой буквы английского алфавита в общем количестве английских букв в тексте, и выводит результат в файл analysis.txt. Символы, не являющиеся буквами английского алфавита, учитывать не нужно.

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

Пример:

Содержимое файла text.txt:
Mama myla ramu.

Содержимое файла analysis.txt:
a 0.333
m 0.333
l 0.083
r 0.083
u 0.083
y 0.083

Что оценивается

  • Результат вычислений корректен.
  • Формат вывода соответствует примеру.
  • Основной функционал описан в отдельных функциях.
  • Переменные и функции имеют значащие имена, не только a, b, c, d (подробнее об этом в видео 2.3).
  • Входные и выходные файлы названы так, как указано в задании.
file = open('text.txt', 'r', encoding='UTF-8')
text = file.read()
abc = 'a b c d e f g h i j k l m n o p q r s t u v w x y z'.split()
uniq_symb = {}
count = 0

for i in text.lower():
    if i in abc:
        count += 1
        if i not in uniq_symb:
            uniq_symb[i] = 1
        else:
            uniq_symb[i] += 1

for k, v in uniq_symb.items():
    uniq_symb[k] = round((v / count), 3)

res = [(k, v) for k, v in uniq_symb.items()]
res = sorted(res, key=lambda i:i[0])
res = sorted(res, key=lambda i:i[1], reverse=True)

new_file = open('analysis.txt', 'w', encoding='UTF-8')
for i in res:
    new_file.writelines(str(i) + '\n')

file.close()
new_file.close()