Нахождение наиболее часто используемой первой буквы в файле со словами
Задача заключается в том, что дан набор слов и частоты встречаемости этих слов в тексте. Необходимо найти самую часто встречаемую букву среди всех. Работа с файлом. Пример содержимого файла:
"10 абрикос
8 сингулярность
3 пирамида"
list1 = []
list3 = []
list2 = []
list4 = []
c = 0
Max = 0
dictionary = dict()
d1 = []
f = open("1.txt", mode="r", encoding="utf-8-sig")
a = f.readlines()
for i in a:
b = i.split(" ")
for j in b:
list1.append(j)
list1 = [line.rstrip() for line in list1]
print(list1)
for i in range(0, len(list1)):
if i % 2 != 0:
for j in list1[i]:
list2.append(j[0])
break
elif i % 2 == 0:
list3.append(list1[i])
for i in list3:
i = int(i)
list4.append(i)
dictionary = {i : j for i, j in zip(list4, list2)}
d1 = sorted(dictionary)
print(d1)
for i in range(0, len(d1)):
if d1[i - 1] == d1[i]:
c = c + d1
if c > Max:
Max = c
print(d1[i], Max)
Ответы (3 шт):
Автор решения: n1tr0xs
→ Ссылка
Можно так сделать:
file = open('file.txt', encoding='utf-8', mode='r') # открываем файл
letters_freq = dict()
for line in file: # перебираем строки в файле
count, word = line.rstrip().split(' ')
count = int(count)
for letter in word: # считаем количество каждой буквы
try:
letters_freq[letter] += 1
except KeyError:
letters_freq[letter] = 1
file.close() # закрываем файл
values = sorted(letters_freq.items(), key=lambda x: x[1], reverse=True)
print(f'{values[0][0]} встречается {values[0][1]} раз. Частота: {values[0][1] / sum(letters_freq.values())}')
Автор решения: SergFSM
→ Ссылка
Похожий вариант, но с использованием Counter. Как он работает читайте здесь:
from collections import Counter
c = Counter()
with open('friq.txt', encoding='utf-8') as f:
for l in f:
n, s = l.strip().split()
c += Counter(s * int(n))
print(c)
'''
Counter({'с': 26, 'и': 24, 'р': 21, 'о': 18, 'а': 16, 'н': 16, 'б': 10, 'к': 10,
'г': 8, 'у': 8, 'л': 8, 'я': 8, 'т': 8, 'ь': 8, 'п': 3, 'м': 3, 'д': 3})
'''
print('"{}" встречается {} раз'.format(*(c.most_common(1)[0])))
'''
"с" встречается 26 раз
PS
дан набор слов и частоты встречаемости этих слов в тексте
видимо, частота встречаемости слов дана в условии не просто так
Автор решения: hidwidwi
→ Ссылка
list1 = []
list3 = []
list2 = []
list4 = []
c = 0
letter = []
f = open("words_freq1.txt", mode="r", encoding="utf-8-sig")
a = f.readlines()
for i in a:
b = i.split(" ")
for j in b:
list1.append(j)
list1 = [line.rstrip() for line in list1]
for i in range(0, len(list1)):
if i % 2 != 0:
for j in list1[i]:
list2.append(j[0])
break
elif i % 2 == 0:
list3.append(list1[i])
for i in list3:
i = int(i)
list4.append(i)
for i in range(0, len(list2)):
if list2[i] == list2[0]:
c = c + list4[i]
letter.append(list2[i])
print(letter[0], c)