Одним из подходов может быть создание словаря, итерация по разным буквам в строке и использование re.finditer
для получения индекса всех вхождений в строке. Итак, шаг за шагом:
import re
a = 'string of letters'
Мы можем найти уникальные буквы в строке, взяв набор:
letters = set(a.replace(' ',''))
# {'e', 'f', 'g', 'i', 'l', 'n', 'o', 'r', 's', 't'}
Затем мы можем использовать словарное понимание для построения словаря, в котором значения являются списком, сгенерированным путем итерации по всем экземплярам совпадений, возвращаемым re.finditer
:
{w: [m.start() for m in re.finditer(w, a)] for w in letters}
{'i': [3],
'o': [7],
'f': [8],
'l': [10],
'g': [5],
'e': [11, 14],
't': [1, 12, 13],
's': [0, 16],
'n': [4],
'r': [2, 15]}