当我在[字典] .pop([key])中使用变量作为[key]时,我一直收到KeyError

时间:2016-04-06 23:49:56

标签: python python-3.x dictionary pop

当我为[key]使用常量(其值与变量相同)时,我没有得到KeyError。

例如:

self._answer= input("Which appointment would you like to delete?")
self._useless= self._book.pop(self._answer)

当self._answer = 1001时出现关键错误:

self._useless= self._book.pop(1001)

按需运作。我有什么想法可以解决这个问题吗?

编辑:正如下面建议的@ user2357112,以下代码段有效:def deleteAppointment(self): self._answer= int(input("Which appointment would you like to delete?")) del self._book[self._answer]

然而,在重做整个项目后,我不再遇到上面的问题(即使用[dictionary] .pop([key])不再产生KeyError)。 因此,如果您收到此错误,则代码中可能存在错误。

1 个答案:

答案 0 :(得分:2)

Python 3上的

input返回一个字符串,'1001' != 1001。如果您的键是int 1001,则需要将输入转换为int:

self._answer= int(input("Which appointment would you like to delete?"))

另外,名称self._useless表示您可能不关心pop操作的结果。如果您只想从dict中删除条目,可以使用del

del self._book[self._answer]

或者您可以忽略pop的返回值,而不是将其分配给任何内容:

self._book.pop(self._answer)