python脚本的一部分: (我先编了字典“h”)
def histogram(L):
d= {}
for x in L:
if x in d:
d[x] +=1
else:
d[x] =1
return d
h=histogram(LIST)
for vhfile in vhfiles:
linelist=commands.getoutput('cat ' + vhfile).splitlines(True)
list1=[]
for line in linelist:
name1 = line.split()[0]
if int(h[name1]) <= 300:
list1.append(line)
然后我在“如果”行出错:
File "/home/xug/scratch/mrfast/NA12878/dis_rm.py", line 51, in <module>
if int(h[name1]) <= 300:
KeyError: '080821_HWI-EAS301_0002_30ALBAAXX:1:46:1643:1310'
知道这里发生了什么吗? 泰铢
键错误意味着您在dict中引用了一个不存在的键。检索指定键处的值时出错,因为该键不存在。你知道吗
处理这个问题的一种方法是使用try/except块。如果“try”中的代码引发了“KeyError”,那么您就知道name1不在h中,您可以做任何适当的事情。你知道吗
这种倾向于异常处理而不是大量使用“if”检查的方法在Python社区中被称为“EAFP”(请求原谅比请求许可更容易)。你知道吗
在尝试引用name1之前,还可以(使用较少的Pythonic方法)检查name1是否在列表中:
这种方法被称为“三思而后行”(LBYL)。总体而言,EAFP更可取。你知道吗
另外,你甚至不需要直方图函数。在Python2.7中,有一个Counter对象为您执行以下操作:
在2.7之前,您可以使用defaultdict获得相同的结果:
当您试图在
dict
中查找某个内容时,KeyError
,而dict
不包含该键。你知道吗在这种情况下,键
'080821_HWI-EAS301_0002_30ALBAAXX:1:46:1643:1310'
似乎不出现在h
。你知道吗相关问题 更多 >
编程相关推荐