[英]All possible combinations of dictionary values given input string. Python
我正在嘗試從給定特定鍵的字典中的值中獲取所有可能的字符串。 例如,“ 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 . . .
好吧,您已經在這里導入了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']
那是您想要的結果嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.