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

... 或者只使用 defaultdictCounter,它们默认执行初始化,您可以只执行 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 本身的调用中(这应该是不可能的)。