В модуле collections
есть очень удобная функция, Counter
, которая будет вычислять частоту объектов в последовательности:
import collections
collections.Counter('A long sentence may contain repeated letters')
, которая выдаст:
Counter({' ': 6,
'A': 1,
'a': 3,
'c': 2,
'd': 1,
'e': 8,
'g': 1,
'i': 1,
'l': 2,
'm': 1,
'n': 5,
'o': 2,
'p': 1,
'r': 2,
's': 2,
't': 5,
'y': 1})
В вашем случае вы можете объединить свои строки, например, используя ''.join(lines)
, прежде чем переходить в Counter
.
Если вы хотите достичь аналогичного результата, используя необработанные словари, вы можете захотеть сделать что-то вроде следующего:
counts = {}
for c in my_string:
counts[c] = counts.get(c, 0) + 1
В зависимости от вашей версии Python это может быть медленнее, но использует метод .get()
из dict
, чтобы либо вернуть существующий счетчик, либозначение по умолчанию перед увеличением числа для каждого символа в вашей строке.