Нужно написать программа, которая будет перебирать первые буквы слова и выводить в порядке убывание частоты из употребления python
В файле input.txt задан текст, содержащий не более 1000 символов. Записать в файл output.txt и вывести на экран буквы, на которые начинаются слова в тексте, в порядке убывания частоты их употребления.
file_in = open('input.txt', encoding='utf-8') # открываем файл для чтения
file_out = open('output.txt', 'w', encoding='utf-8') # открываем файл для изменения
s = file_in.read()
print(s)
file_in.close()
list = []
s=s.lower()
a = s.split(' ')
slovar=dict()
j=ord('а')
for i in range(1+34):
slovar[chr(j)]=0
j+=1
count_rus_letter = 0
for i in range(len(a)):
if a[i][0] in slovar:
slovar[a[i][0]]+=1
count_rus_letter+=1
for i in slovar:
if slovar[i] != 0:
list.append(slovar[i])
file_out.write(i+ '-' + str(slovar[i]))
print(i,'-', (slovar[i]))
list = sorted(list, reverse=True)
print(list)
file_out.write(list)
file_out.close()
Нужно сделать так, чтобы он сортировал от большего к меньшему и выводил это, также записывая в output.txt
Ответы (1 шт):
Автор решения: Kuchizu
→ Ссылка
from collections import Counter
with open('input.txt', encoding='utf-8') as f:
file_in = f.read()
with open('output.txt', 'w', encoding='utf-8') as f:
c = Counter(i[0] for i in file_in.split())
for i in sorted(c, key=c.get)[::-1]:
f.write(f'{i}- {c[i]}\n')