我想制作一个字符串列表,将Amino中的每个字母替换为以下词典项中列表中的所有字符串:

Amino = "mvkhdlsr"

dict = {
'f' : ['UUU', 'UUC'],
'l' : ['UUA', 'UUG', 'CUU', 'CUG', 'CUA', 'CUG'],
'i' : ['AUU', 'AUC', 'AUA'],
'm' : ['AUG'],
'v' : ['GUU', 'GUC', 'GUA', 'GUG'],
's' : ['UCU', 'UCC', 'UCA', 'UCG', 'AGU', 'AGC'],
'p' : ['CCU', 'CCC', 'CCA', 'CCG'],
't' : ['ACU', 'ACC', 'ACA', 'ACG'],
'a' : ['GCU', 'GCC', 'GCA', 'GCG'],
'y' : ['UAU', 'UAC'],
'x' : ['UAA', 'UAG', 'UGA'],
'h' : ['CAU', 'CAC'],
'q' : ['CAA', 'CAG'],
'n' : ['AAU', 'AAC'],
'k' : ['AAA', 'AAG'],
'd' : ['GAU', 'GAC'],
'e' : ['GAA', 'GAG'],
'c' : ['UGU', 'UGC'],
'w' : ['UGG'],
'r' : ['CGU', 'CGC', 'CGA', 'CGG', 'AGA', 'AGG'],
'g' : ['GGU', 'GGC', 'GGA', 'GGG']
}

例如,如果Amino"mfy",则所需输出为

AUGUUUUAU
AUGUUUUAC
AUGUUCUAU
AUGUUCUAC

由于m只有一个病例(AUG),f有两个病例(UUUUUC),y也有两个病例(UAUUAC).

我试过这样的方法

for word in Amino.split():
    if word in dict:
        for key, value in dict.items():
            for i in (0,len(value) - 1):
                for idx in value:

(未完成的代码),但无法找到它.

推荐答案

试试这个

from itertools import product
from operator import itemgetter

# itemgetter gets the values where letters in Amino are keys
# product creates Cartesian product from the lists
# join each tuple with "".join
list(map("".join, product(*itemgetter(*Amino)(dict))))

# ['AUGGUUAAACAUGAUUUAUCUCGU',
#  'AUGGUUAAACAUGAUUUAUCUCGC',
#  'AUGGUUAAACAUGAUUUAUCUCGA',
#  'AUGGUUAAACAUGAUUUAUCUCGG',
#  'AUGGUUAAACAUGAUUUAUCUAGA',
#  ...]

对于Amino = "mfy",步骤是

itemgetter(*Amino)(dct)
# (['AUG'], ['UUU', 'UUC'], ['UAU', 'UAC'])

list(product(*itemgetter(*Amino)(dct)))
# [('AUG', 'UUU', 'UAU'), ('AUG', 'UUU', 'UAC'), ('AUG', 'UUC', 'UAU'), ('AUG', 'UUC', 'UAC')]

list(map("".join, product(*itemgetter(*Amino)(dct))))
# ['AUGUUUUAU', 'AUGUUUUAC', 'AUGUUCUAU', 'AUGUUCUAC']

Python相关问答推荐

有没有办法清除气流中的僵尸

如何循环循环的每个元素并过滤掉Python rame中的条件

Python:根据创建时间合并两个收件箱

从 struct 类型创建MultiPolygon对象,并使用Polars列出[list[f64]列

实现的差异取决于计算出的表达是直接返回还是首先存储在变量中然后返回

如何处理嵌套的SON?

理解Python的二分库:澄清bisect_left的使用

我在使用fill_between()将最大和最小带应用到我的图表中时遇到问题

使用新的类型语法正确注释ParamSecdecorator (3.12)

如何删除索引过go 的lexsort深度可能会影响性能?' &>

沿着数组中的轴计算真实条目

不理解Value错误:在Python中使用迭代对象设置时必须具有相等的len键和值

通过Selenium从页面获取所有H2元素

"使用odbc_connect(raw)连接字符串登录失败;可用于pyodbc"

如何获取numpy数组的特定索引值?

梯度下降:简化要素集的运行时间比原始要素集长

在vscode上使用Python虚拟环境时((env))

用渐近模计算含符号的矩阵乘法

合并帧,但不按合并键排序

如何在TensorFlow中分类多个类