Если речь про последовательно идущие два символа, то вот:
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})