簡體   English   中英

給定輸入字符串的字典值的所有可能組合。 蟒蛇

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM