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

Creating all combinations of a string given character values from a dictionary in python

var = {'A': 'A', 'W': 'AT', 'K': 'GT'}
lst = ['AWK']

根据上面的列表和字典,我想得到 lst 中字符串的组合:

[A,A,G], [A,A,T],[A,T,G],[A,T,T]

这些组合源自 lst 中的字符串和该字符串的各个字符的变体(在字典中列出)。

字典表示特定第一个字符可以表示的不同字符。所以 lst 中的 'W' 实际上可以是 'A' 或 'T'.

再举一个例子,如果 lst = ['AW'],则排列将是:['A','A'] 和 ['A','T'].

我希望 itertools 之类的东西可以帮到我。

很难说出你在问什么,但我猜是这样的:

itertools.product(var.values())

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

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