【问题标题】:add new key to dict - KeyError向 dict 添加新键 - KeyError
【发布时间】:2018-01-02 02:26:28
【问题描述】:
    def fibMemo(n):
        pad = {0:0, 1:1}  
        if n not in pad:
           print 'Not in dict ,adding', n, n-1, n-2
           pad[n] = pad[n-1] + pad[n-2]
       else:
           print pad[n]
    return 

   for i in range(0,31):
     fibMemo(i) 

第 4 行:返回 KeyError:2 ,但我正在添加一个新的键值,以防该键不存在。今天刚开始使用 Python,所以请原谅我的无知。输出

    Error:
    0 
    1
    Not in dict ,adding 2 1 0 
    Not in dict ,adding 3 2 1
     Line 5: KeyError: 2

i=3 在 i=2 完成之前运行。

【问题讨论】:

  • 请考虑添加示例输入和预期输出。

标签: python python-2.7 dictionary


【解决方案1】:

你把dict的初始化放在函数体内。

所以每次执行函数时,项目都会回到 0:0 和 1:1。

调用fibMemo(3)时会进入第5行,即:

pad[3]=pad[2]+pad[1]

因为 pad[2] 被添加,但后来在 pad 的初始化过程中被清除了。它给出了关键错误。

您应该考虑在函数定义之前移动pad={}

【讨论】:

  • 不,也没有帮助
  • @Raj 是的,它不起作用。请查看新答案。我认为这可能是原因。
猜你喜欢
  • 2022-01-22
  • 2019-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-09
  • 2016-01-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多