Генерация различных комбинаций строк на основе предопределенной строки и словаря - PullRequest
0 голосов
/ 10 июля 2020

Я пытаюсь написать функцию, которая выдаст мне все возможные комбинации данной строки на основе предопределенного словаря. Предположим пример:

dict = {'a':'á', 'a':'ä', 'y':'ý'}
string = "antony"
word_combination(string, dict) #desired function

И ожидаемый результат должен быть:

["antony", "ántony", "äntony", "ántoný", "äntoný", "antoný"]

т.е. мы создали все возможные комбинации определенной строки , выполняя замену на основе определенной словарь . Какие-нибудь предложения / советы, как это сделать?

1 Ответ

0 голосов
/ 10 июля 2020

Вот решение после преобразования вашего словаря в действительный:

import itertools

d = {'a':['á','ä'], 'y':['ý']}
string = "Anthony"

# if since each char can be replaced with itself, add it to the list of 
# potential replacements. 
for k in d.keys():
    if k not in d[k]:
        d[k].append(k)

res = []
for comb in [zip(d.keys(), c) for c in itertools.product(*d.values())]:
    s = string
    for replacements in comb:
        s = s.replace(*replacements)
    res.append(s)

Результат:

['ánthoný', 'ánthony', 'änthoný', 'änthony', 'anthoný', 'anthony']
...