4

私は例えばこの辞書を持っています

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

1 に答える 1

7

ここで使用できます 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']
于 2013-01-21T02:47:31.887 に答える