我试图从给定特定键的字典中的值中获取所有可能的字符串。例如,' A'可能意味着' aaa',' aba'或者' aac'和' B'可能意味着' bbb'' bab'或' bbc'等等。
我已经给出了一个输出示例,其中显示了可能字符串的大多数组合
import itertools
in_ = 'ABC'
D = {'A':['aaa','aba','aac'],'B':['bbb','bab','bbc'],'C':['ccc','cac','ccb']}
#out_ = ['aaabbbccc','ababbbccc','aacbbbccc','aaababccc','aaabbcccc','aaabbbcac','aaabbbccb'...]
我开始编写代码,但它开始变得非常混乱,我觉得有一种方法可以使用itertools或pythonic来实现这个目标
output = []
for char in in_:
out_string = ''
while char:
for v in D[char]:
while v:
for char2 in in_:
out_string
#not pythonic . . .
答案 0 :(得分:5)
嗯,你已经在那里导入了itertools
。让我们来使用吧!我们想要采用笛卡尔积D['A'] × D['B'] × D['C']
,因此我们使用itertools.product
来做到这一点。
import itertools
in_ = 'ABC'
D = {'A':['aaa','aba','aac'],'B':['bbb','bab','bbc'],'C':['ccc','cac','ccb']}
iterables = [D[character] for character in in_]
out_ = [''.join(tup) for tup in itertools.product(*iterables)]
现在,out_
是:
['aaabbbccc', 'aaabbbcac', 'aaabbbccb', 'aaababccc', 'aaababcac', 'aaababccb',
'aaabbcccc', 'aaabbccac', 'aaabbcccb', 'ababbbccc', 'ababbbcac', 'ababbbccb',
'abababccc', 'abababcac', 'abababccb', 'ababbcccc', 'ababbccac', 'ababbcccb',
'aacbbbccc', 'aacbbbcac', 'aacbbbccb', 'aacbabccc', 'aacbabcac', 'aacbabccb',
'aacbbcccc', 'aacbbccac', 'aacbbcccb']
这是你想要的结果吗?