在Python中使用字典时出现KeyError



我想写一个程序来找到一对特定和的数字。它使用字典来存储数字,并相应地找到对应的数字对。代码如下:

def printpairs(A, arr_size, sum):
    hash = {}
    for i in A:
        hash[i] = None
    for i in range(0,arr_size):
        temp = sum - A[i]
        if (temp >= 0 and hash[temp] == 1):
            print sum, A[i], temp
        hash[A[i]] = 1

A = [1,4,45,6,10,8]
printpairs(A, 6, 16)

我得到错误:

Keyerror : 15

我不明白我错在哪里

帮助你理解问题的几个注意事项:

  • hash具有与A相同的大小,在您的示例中,它是6,其键是A
  • 中的项
  • 在第一次迭代中,temp16 - A[0] -> 16 - 1 -> 15
  • hash[temp]不存在,因为A不包含15

请注意,您不需要传递列表的大小,您可以通过使用len在函数中拥有它。此外,当遇到这种问题时,请考虑使用调试器,它将帮助您比Stack Overflow上的人更快地找到问题。

Python在请求dict()对象时引发KeyError(使用a = adict[key]格式),并且密钥不在字典。

如果你不想有一个异常,而希望有一个默认值值,您可以使用get()方法:

A.get(15, 'default_value')

最新更新