python - 如何在不必编写 20 个 if 语句或制作 20 个列表/字典的情况下进行以下比较?

标签 python list dictionary

这个问题和生物学有关,所以对于那些知道氨基酸和密码子是什么的人来说,那太好了!对于那些不了解的人,我已尽力对其进行措辞,以便您能够理解我在说什么。

所以我有一个密码子列表,也可以称为三字母字符串,由以下四个字母的组合组成:A、G、C、T 即 AAT、GAT、GCT 等。每个密码子对应于特定的氨基酸,但是有多个密码子可以对应于相同的氨基酸。为了说明这一点,请查看此链接:http://www.cbs.dtu.dk/courses/27619/codon.html .那应该说清楚了。

对于我列表中的每个密码子,我想最终找出它对应的氨基酸。因此,我必须让程序首先将该密码子与我发布链接的密码子列表(总共 64 个可能的密码子)进行比较,然后我必须让程序查看该密码子对应的氨基酸。但是,我想不出一个快捷的方法来执行此操作,而不必列出与给定氨基酸对应的所有密码子并进行比较,或者编写 20 个不同的 if 语句。

我拥有的密码子列表称为 mutated_codon。因此,我将需要生成一个“for”,其中程序比较我的 mutated_codon 列表中的每个密码子并将其与字典进行比较并输出相应的氨基酸字母。为此我必须编写什么代码?我不熟悉用于检查字典中值的语法。

这是我根据建议到目前为止所做的:

codon_lookup = {'GCT': 'A', 'GCC': 'A','GCA': 'A','GCG': 'A', 'TGT': 'C','TGC':'C', 'GAT':'D','GAC': 'D', 'GAA':'E','GAG': 'E', 'TTT':'F','TTC': 'F', 'GGT': 'G','GGC': 'G','GGA':'G','GGG': 'G', 'CAT':'H','CAC': 'H', 'ATT':'I','ATC':'I','ATA':'I','AAA':'K','AAG':'K', 'TTA': 'L','TTG': 'L','CTT': 'L','CTC': 'L','CTA': 'L','CTG': 'L', 'ATG': 'M', 'AAT':'N','AAC':'N', 'CCT': 'P','CCC': 'P','CCA': 'P','CCG': 'P', 'CAA': 'Q','CAG': 'Q', 'CGT': 'R','CGC': 'R','CGA': 'R','CGG': 'R','AGA': 'R','AGG': 'R', 'TCT': 'S','TCC': 'S','TCA': 'S','TCG': 'S','AGT': 'S','AGC': 'S', 'ACT': 'T','ACC': 'T','ACA': 'T','ACG': 'T', 'GTT': 'V','GTC': 'V','GTA': 'V','GTG': 'V', 'TGG' = 'W', 'TAT':'Y', 'TAC':'Y', 'TAA': 'Z', 'TAG': 'Z', 'TGA':'Z'}

for c in mutated_codon:
   print codon_lookup[c]

但是,在我的输出中,我只得到与列表中最后一个密码子对应的氨基酸的输出,最重要的是,我得到 KeyError: 4。有什么想法可能是错误的吗?

最佳答案

你可以这样设置字典:

codon_lookup = {
    'ATT':'Isoleucine',
    'ATC':'Isoleucine', 
    'ATA':'Isoleucine',
    'CTT':'Leucine',
    'CTC':'Leucine', 
    'CTA':'Leucine',
     # ... etc
} 

然后你可以像这样查询

codon_lookup['ATT']

哪个会给你

'Isoleucine'

编辑:

你可以这样设置字典:

codon_lookup = {
    'ATT':'I',
    'ATC':'I', 
    'ATA':'I',
    'CTT':'L',
    'CTC':'L', 
    'CTA':'L',
     # ... etc
} 

然后你可以像这样查询

codon_lookup['ATT']

哪个会给你

'I'

如果你想根据这个字典检查你的mutated_condons列表,你可以像这样循环遍历它。如果您的 mutated_condons 列表看起来像 ['ACA','GTT',...] 那么:

for mutated_codon in mutated_condons:
    print codon_lookup[mutated_codon]

关于python - 如何在不必编写 20 个 if 语句或制作 20 个列表/字典的情况下进行以下比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19802024/

相关文章:

file - 如何将文件转换为 tcl 列表?

python - 从 q 个元素的列表中创建所有长度为 "n"的列表

python - 如何将元组作为函数的参数传递

python - 如何处理 celery 的 Task.map 中的错误

python - 递归枚举 JSON 层次结构父/子到字典

Python 字典到数据帧 - DataFrame 构造函数未正确调用

Python Pandas : Error tokenizing data. C 错误:读取 1GB CSV 文件时字符串内的 EOF 开始

python - Python3.3的Scipy在哪里下载?

python - 使用 pip3 安装 hashlib 时出现不支持的哈希类型错误

python - Django 和 Rails - 在 Windows 环境中我应该期待什么?