Мой код следующий:
with open("test.txt") as f_in:
for line in f_in:
for char in line:
frequencies[char] += 1
list= [(count, char) for char, count in frequencies.iteritems()]
Этот код открыть test.txt , прочитать каждую строку и подписать список в форме, например: [(3,'а'), .........] .Это означает, что во всем текстовом файле есть три a и так далее ...
Мне нужно вычислить это число, вместо 3 , мне нужно [3/ номер всего знака] .Так что мне не нужно количество знаков, например, a в тексте, но мне нужна вероятность знака a.
Так что если в тексте (test.txt) будет "aaab", мне нужен вывод "list": [(0.75, 'a'), (0.25, 'b')]
Большое спасибо за помощь.
EDIT2
import collections
frequencies = collections.defaultdict(int)
with open("test.txt") as f_in:
for line in f_in:
for char in line:
frequencies[char] += 1
total = float(sum(frequencies.keys()))
verj= [(count/total, char) for char, count in frequencies.iteritems()]
Это не работает, выведите ошибку:
total = float(sum(frequencies.keys()))
TypeError: неподдерживаемые типы операндов для+: 'int' и 'str'