Подскажите, пожалуйста, каким образом можно реализовать следующее:
есть три пары значений
("a b c"; "x") , ("a b"; "y"), ("a", "z") в виде словаря dict.
Во входной строке необходимо искать и заменять подстроки из словаря в такой логике:
- если в строке есть подстрока
"a b c", то надо заменить вхождение "a, b, c" на "x", согласно первой паре
- если в строке есть подстрока
"a b", то надо заменить вхождение "a, b" на "y", согласно второй паре
- если в строке есть только
"a", тогда надо заменить на "z", согласно третьей паре
То есть если есть длинные последовательности, имеющие вхождение в строку, то сначала заменить их, и так далее до самых коротких.
Пока вижу только вариант сделать три словаря - с длинными последовательностями, со средними и с самыми короткими, и по очередь идти по этим словарям. Но длина может быть и больше, чем в примере, поэтому хотелось бы найти более умный поиск, чтобы использовать только один словарь.
Также есть идея использовать новую структуру данных: во-первых, упорядоченную по длине последовательностей, во-вторых хранящую обе пары значений из словаря, тогда, соответственно, поиск проходил бы от самых длинных к самым коротким.
Подскажите, пожалуйста, какую структуру данных и как лучше использовать?
Как хранить новую структуру данных? Словарь легко хранить как текст в отдельном файле, можно ли так поступить с созданной структурой данных?