Python 如何解决 KeyError: 2
我在Codehs上做一个题目时遇到了一个错误。我编程水平不太好,但我就是搞不清楚我哪里出错了。每次运行代码时,我都会遇到KeyError: 2的错误,我已经调试了一段时间。我的代码是用来接收用户输入的字符串,然后打印出每个单词在字符串中出现的次数,并把这些数量放到一个字典里,单词作为键。比如,当我输入“hello hello”时,我就会得到KeyError: 2的错误。下面是我的代码。任何帮助我解决这个问题的建议都非常感谢!
my_dict = {}
string = input("Enter a string: ")
string = string.split()
for value, item in enumerate(string):
if string[value] in my_dict:
my_dict.update({value : my_dict[value+1]})
else:
my_dict[item] = 1
print(my_dict)
我尝试了很多方法,比如调试和使用打印语句,但都没有成功。
2 个回答
0
我觉得第6行是你遇到的问题,你在尝试更新字典,以显示某个字符串出现了不止一次。你可以把它改成这样:
my_dict[item] += 1
这样做会把字典中某个项目的现有数字加1。
1
在你更新字典的时候,你搞混了想要更新的键(也就是你的子字符串 item
)和它在分割列表中的索引/位置(value
)。下面的代码可以解决这个问题(把你问题中的相应代码行替换掉):
if string[value] in my_dict:
my_dict.update({item : my_dict[item]+1})
不过,这样做其实有点复杂,因为你可以直接更新字典的内容,方法如下:
if string[value] in my_dict:
my_dict[item] += 1
另外要注意的是,你用 enumerate()
产生的 value
其实并不需要:它只是随着你分割字符串中的每个子字符串增加一,这对计算重复项并没有什么帮助。你现在使用 value
的方式可以很容易地用下面的方式替换掉:
for item in string:
if item in my_dict:
my_dict[item] += 1
else:
my_dict[item] = 1