如果我的键列表中没有一个字符,例如" 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()
我对你的问题有些困惑。我想有问题的行是
aa_per = (counts[key]/total)*100
您可以使用try
块检查KeyError
:
try:
aa_per = (counts[key]/total)*100
except KeyError:
aa_per = 0
我猜如果没有发生键,则在这里的百分比为0。
一般而言,try
块是检查例外或警告的强大工具。另请参见therehttps://docs.python.org/3/tutorial/errors.html
如果您仍然想计算此x字符的出现数量,则可以使用defaultDict
from collections import defaultdict
counts = defaultdict(int)
计数将是词典的一个实例,如果键不存在,它不会返回0。这样,您将能够完全避免使用字典初始化。
更新:如果您想使用if-else,我认为这足以做到:
for char in line.strip():
if char in keys:
counts[char] += 1