簡體   English   中英

如何從具有列表值的字典中獲取一系列鍵來檢索所有可能的組合

[英]How to retrieve all possible combinations given a sequence of keys from a dictionary with list values

我有這個字典

d={'M':['ATG'],'D':['GAC','GAT'],'E':['GAA','GAG']}

在給定一系列鍵的情況下,我想要的輸出是包含所有可能序列的列表。 (也可以是一個字符串,其中所有可能的序列都在單獨的行中“\\ n”)

sequence = "MDE" 

所以,輸出應該如下:

['ATGGACGAA','ATGGACGAG','ATGGATGAA','ATGGATGAG']

到目前為止我所嘗試的是以下內容,但當然這不是我想要的:

seq_trans = ''

for aa in sequence:
  for k, v in d.iteritems():
    if k == aa:
      for item in v:
        seq_trans= seq_trans + item
print seq_trans

我得到的“MDE”是:

'ATGGACGATGAAGAG'

你可以在這里使用itertools.product ,它返回輸入迭代的笛卡爾積。

In [78]: seq="MED"

In [79]: ["".join(x) for x in product(*(d[y] for y in seq))]
Out[79]: ['ATGGAAGAC', 'ATGGAAGAT', 'ATGGAGGAC', 'ATGGAGGAT']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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