gpt4 book ai didi

python - 生物信息学:将列表项与字典键匹配并打印匹配键

转载 作者:行者123 更新时间:2023-12-01 01:53:19 26 4
gpt4 key购买 nike

家庭作业辅导

我需要编写一个函数,能够从用户处获取包含 DNA 密码子的字符串,例如

'ACATTTGCTTCTGACACAACTGTGTTCACTAGCAACCTCAAAC'

将字符串分成 3 组,然后将每组与字典项进行匹配。但程序必须只打印出键,而不打印出值。

输入:ATTGHIATGTTTTTCTYU

分离:[ATT] [GHI] [ATG] [TTT] [TTC] [TYU]

输出:IMFF

这就是我目前所拥有的

dna_codons = {'I': 'ATT' 'ATC' 'ATA',
'L': 'CTT' 'CTC' 'CTA' 'CTG' 'TTA' 'TTG',
'V': 'GTT' 'GTC' 'GTA' 'GTG',
'F': 'TTT' 'TTC',
'M': 'ATG',
}
def translate(sequence):
n = 3
MyList = [sequence[i:i+n] for i in range(0, len(sequence), n)]
for codon in MyList:
for slc in dna_codons.keys():
if codon == slc:
print slc

print translate(raw_input('type in DNA sequence: '))

最佳答案

您可以使用列表理解和生成器将输入字符串拆分为 block 更轻松地实现目标。

尝试这样的事情:

in_seq = 'ATTGHIATGTTTTTCTYU'  # change this to input()

_codes = { # your original dict is incorrect
'ATT': 'I', 'ATC': 'I', 'ATA': 'I',
'CTT': 'L', 'CTC': 'L', 'CTA': 'L', 'CTG': 'L', 'TTA': 'L', 'TTG': 'L',
'GTT': 'V', 'GTC': 'V', 'GTA': 'V', 'GTG': 'V',
'TTT': 'F', 'TTC': 'F',
'ATG': 'M',
}


def split_seq(s, n=2):
""" split string to chunks of size n """
i = 0
while i < len(s):
yield s[i:i + n]
i += n

out_codes = [_codes[z.upper()] for z in split_seq(in_seq, 3) if z.upper() in _codes]
result = ''.join(out_codes)
print(result)

输出:

IMFF

如果您想查看分隔列表,请输入 print(list(split_seq(in_seq, 3))):

['ATT', 'GHI', 'ATG', 'TTT', 'TTC', 'TYU']

<小时/>

更新

如果您不想使用生成器,请将其替换为以下普通函数:

def split_seq(s, n=2):
res = []
i = 0
while i < len(s):
res.append(s[i:i + n])
i += n
return res

关于python - 生物信息学:将列表项与字典键匹配并打印匹配键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50513662/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com