从python中的字典创建给定字符值的字符串的所有组合

时间:2016-04-11 20:58:16

标签: python list dictionary combinations

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之类的东西可以帮助我解决这个问题。

2 个答案:

答案 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']

(顺便说一句:这些不是排列。)