我有这样的字典
d = {'a' : ['1', '+', '='], 'b' : ['2'], c : ['3']}
我的目标是通过像这样替换其元素来创建一个包含初始单词所有可能派生词的列表:
word = 'abcde'
rez = ['abcde',
'1bcde', '+bcde', '=bcde',
'a2cde', '12cde', '+2cde', '=2cde',
'ab3de', '1b3de', '+b3de', '=b3de', 'a23de', '123de', '+23de', '=23de']
rez 中的单词顺序并不重要。
我觉得 itertools 应该有一些简单的方法,但我看不到。 任何漂亮的解决方案都将受到欢迎。
请您参考如下方法:
当然,itertools始终是此类问题的答案。可能有更好的选择,但我首先想到的是使用 itertools.product :
from itertools import product
[''.join(chars) for chars in product(*[[x] + d.get(x, []) for x in word])]
输出
['abcde', 'ab3de', 'a2cde', 'a23de', '1bcde', '1b3de', '12cde', '123de',
'+bcde', '+b3de', '+2cde', '+23de', '=bcde', '=b3de', '=2cde', '=23de']
