Как посчитать частоту встречающихся пар символов?

Есть текстовый файл, в котором набор русских букв. Надо посчитать частоту встречаемости различных символов и пар символов. Частоту встречаемости символов я сделала, а пар не могу понять как реализовать. Нашла пример на c#, но перевести в python не получается. Помогите, пожалуйста :)

Важно то, что последовательность символов считываем из файла.
  • Вопрос задан
  • 284 просмотра
Решения вопроса 1
@deliro
Если речь про последовательно идущие два символа, то вот:

from itertools import tee
from collections import Counter

def f(s):
    a, b = tee(s)
    next(b)
    return Counter(l1 + l2 for l1, l2 in zip(a, b))


>>> f("abracadabra").most_common()
[('ab', 2), ('br', 2), ('ra', 2), ('ac', 1), ('ca', 1), ('ad', 1), ('da', 1)]


Ну или можно продолжить идею и считать последовательности любой длины:

from itertools import tee
from collections import Counter

def f(s, n=2):
    tees = tee(s, n)
    for offset, iterator in enumerate(tees):
        for _ in range(offset):
            next(iterator)

    return Counter(''.join(letters) for letters in zip(*tees))

f("abracadabra", 5)


Counter({'abrac': 1,
         'braca': 1,
         'racad': 1,
         'acada': 1,
         'cadab': 1,
         'adabr': 1,
         'dabra': 1})
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы