var = {'A': 'A', 'W': 'AT', 'K': 'GT'}
lst = ['AWK']
鉴于上面的列表和字典,我想获得lst中字符串的组合:
[A,A,G], [A,A,T],[A,T,G],[A,T,T]
这些组合来自lst中的字符串以及该字符串的各个字符(在dict中列出)的变体。
字典表示特定的第一个字符可以表示的不同字符。所以' W' in lst实际上可以是一个' A'或者' T'。
作为另一个例子,如果lst = [' AW'],那么排列将是:[' A',' A']和[& #39; A'' T']
我希望像itertools
之类的东西可以帮助我解决这个问题。
答案 0 :(得分:0)
很难说出你在问什么,但我猜这个:
itertools.product(var.values())
答案 1 :(得分:0)
IIUC,您可以在为每个角色构建适当的可能性列表后使用itertools.product
。例如:
>>> from itertools import product
>>> var = {'A': 'A', 'W': 'AT', 'K': 'GT'}
>>> word = "AWK"
>>> poss = [var[c] for c in word]
>>> poss
['A', 'AT', 'GT']
>>> list(product(*poss))
[('A', 'A', 'G'), ('A', 'A', 'T'), ('A', 'T', 'G'), ('A', 'T', 'T')]
或者,如果你想要新单词而不是元组:
>>> [''.join(p) for p in product(*poss)]
['AAG', 'AAT', 'ATG', 'ATT']
(顺便说一句:这些不是排列。)