如何使用Python中的其他条件去除KeyError



如果我的键列表中没有一个字符,例如" 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    

最新更新