如果某个字符不在我的键列表中,例如“X”,我该如何避免它并继续而不对其执行任何操作?我得到KeyError'X',因为我正在查看我的序列中有一个X.
keys = ["A", "C", "D", "E"]
for char in keys:
counts[char] = 0
for line in gpcr:
if line.startswith(">"):
line = line.replace(' ','')
header = line.split()
number = header[0].split('|')
print "Id:",number[2]
continue
fo.write(number[2])
fo.write('\n')
for char in line.strip():
if char
counts[char] += 1
total = float(sum(counts.values()))
toReturn = ''
for key in keys:
aa_per = (counts[key]/total)*100
toReturn = toReturn + '%.2f'%aa_per + '%'+ '\t'
fo.write(number[1])
fo.write('\n')
fo.write(''.join(str(x) for x in toReturn))
fo.write('\n')
print toReturn
fo.close()
答案 0 :(得分:0)
如果您仍想计算此X字符的出现次数,可以使用defaultdict
from collections import defaultdict
counts = defaultdict(int)
计数将是字典的实例,而不是引发KeyError,如果该键不存在则返回0。这样您就可以完全避免字典初始化。
更新: 如果你想使用if-else,我认为它应该足够了:
for char in line.strip():
if char in keys:
counts[char] += 1
答案 1 :(得分:0)
我对你的问题感到有些困惑。我想有问题的一行是
aa_per = (counts[key]/total)*100
您可以使用KeyError
块检查try
:
try:
aa_per = (counts[key]/total)*100
except KeyError:
aa_per = 0
我猜如果密钥没有出现,百分比应该是0。
通常try
块是检查异常或警告的强大工具。另请参阅here https://docs.python.org/3/tutorial/errors.html