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