我有一个文件,其中包含一个3个字母的字符串列表(知道生物学的人的密码子)。在我的程序中,我构建了一个字典,每个特定的字符串对应一个指定的字母(对于那些了解生物学的人来说是氨基酸)。所以,我希望我的程序遍历整个字符串/密码子列表,对于每个密码子,我希望程序在字典中查找并输出给定密码子/字符串对应的字母。不幸的是,我没有太多使用字典的经验,所以我不确定如何查找它。我尝试了一些东西,但我一直在犯错误。变量'new_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 x in new_codon:
codon_lookup[x]
if codon_lookup[x] == ref_aa[x]: # Here I'm comparing it to another list I have from another file to see if they match or don't match
print "1"
else:
print "0"
答案 0 :(得分:2)
这将解决您的KeyError
for x in new_codon:
x = x.rstrip() # remove line seperators
...
在评论中提问。
for x, aa in zip(new_codon, ref_aa):
x = x.rstrip() # remove line seperators
if codon_lookup[x] == aa:
print "1"
else:
print "0"
答案 1 :(得分:1)
要检查词典中的值是否使用':
:for x in new_codon:
if x in codon_lookup:
print "1"
else:
print "0"
答案 2 :(得分:1)
如果您提出的要素不在字典中,则会得到KeyError
。
而且您要求的是"ATC\r\n"
而不是"ATC"
。问题不在于代码的这一部分。您只是阅读带有结束字符的new_codon
您所要做的就是添加一个简单的语句来删除字符串x
末尾的结束字符。
codon_lookup = {'GCT': 'A', 'GCC': 'A',...}
for x in new_codon:
#This statement(`codon_lookup[x]`) was pointless
x = x[:3] # Removes the part after the third character
if codon_lookup[x] == ref_aa[x]: # Here I'm comparing it to another list I have from another file to see if they match or don't match
print "1"
else:
print "0"
如果ref_aa
是一个列表,您当然会获得TypeError
。
x
是一个字符串,ref_aa
是一个列表;你不能使用ref_aa[x]
。要解决此问题,您可以使用enumerate
(docs for enumerate):
codon_lookup = {'GCT': 'A', 'GCC': 'A',...}
for i,x in enumerate(new_codon):
x = x[:3] # Removes the part after the third character
if codon_lookup[x] == ref_aa[i]: # Changed the 'x' with 'i' for list
print "1"
else:
print "0"