Python: 使用get() 后按键错误
Python: Key error after using get()
我这里有一个代码,它计算以 'From ' 开头的一行中相似的第二个单词的数量,找出哪个单词出现的次数最多,并打印该单词及其频率。
在使用 get 方法的行上,我得到一个关键错误:(在这里插入第二个词)。这个关键错误发生在第一句话本身并且循环没有遍历。我完全不知道为什么会这样。
name = raw_input("Enter file:")
fh = open(name)
d=dict()
max=0
key=''
for line in fh:
line=line.rstrip()
if line.startswith('From '):
x=line.split()
d[x[1]] = d.get(d[x[1]],0) + 1
for z in d:
if d[z]>max:
max=d[z]
key = z
print key, max
谢谢。
d[x[1]] = d.get(d[x[1]],0) + 1
我觉得这行不对。如果你想增加 d[x[1]]
,如果它还不存在,将它初始化为零,做:
d[x[1]] = d.get(x[1],0) + 1
... 或者只使用 defaultdict
或 Counter
,它们默认执行初始化,您可以只执行 d[x[1]] += 1
.
使用 defaultdict() 代替 dict()。
考虑:
>>> d = {}
>>> d.get(d['a'], 0)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'a'
你得到 KeyError
因为 'a' 不在 d.
所以在你的情况下,KeyError 发生在你为 get to seek 创建密钥时,而不是在 get 本身的调用中(这应该是不可能的)。
我这里有一个代码,它计算以 'From ' 开头的一行中相似的第二个单词的数量,找出哪个单词出现的次数最多,并打印该单词及其频率。
在使用 get 方法的行上,我得到一个关键错误:(在这里插入第二个词)。这个关键错误发生在第一句话本身并且循环没有遍历。我完全不知道为什么会这样。
name = raw_input("Enter file:")
fh = open(name)
d=dict()
max=0
key=''
for line in fh:
line=line.rstrip()
if line.startswith('From '):
x=line.split()
d[x[1]] = d.get(d[x[1]],0) + 1
for z in d:
if d[z]>max:
max=d[z]
key = z
print key, max
谢谢。
d[x[1]] = d.get(d[x[1]],0) + 1
我觉得这行不对。如果你想增加 d[x[1]]
,如果它还不存在,将它初始化为零,做:
d[x[1]] = d.get(x[1],0) + 1
... 或者只使用 defaultdict
或 Counter
,它们默认执行初始化,您可以只执行 d[x[1]] += 1
.
使用 defaultdict() 代替 dict()。
考虑:
>>> d = {}
>>> d.get(d['a'], 0)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'a'
你得到 KeyError
因为 'a' 不在 d.
所以在你的情况下,KeyError 发生在你为 get to seek 创建密钥时,而不是在 get 本身的调用中(这应该是不可能的)。