迭代字典时出现奇怪的运行时错误

2024-10-05 10:56:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我运行了这段代码,得到如下错误:

Traceback (most recent call last):
  File "urllister.py", line 26, in <module>
    for k in l: print k,"points to",l[k],"\n"
RuntimeError: dictionary changed size during iteration

我唯一要做的就是在第27行的for循环中打印

^{pr2}$

Tags: 代码inpymostfor错误linecall
3条回答

这是因为循环引入了一个新的局部变量k,这意味着局部变量的字典在循环中发生了变化。在

最简单的解决方案(如果您确实需要这样做,尽管这通常是一个坏主意的征兆)是复制字典-例如:l = dict(locals())。这样一来,原稿的更新就不会引起问题。在

这是因为循环引入了一个新的局部变量k,这意味着局部变量的字典在循环中被改变了。在

最简单的解决方案是在循环之前定义k,这样一旦循环开始,locals()就不会改变。在

k = 0
l = locals()

for k in l:
    print k,"points to",l[k],"\n"

错误的原因是Python认为,由于您通过键访问dict,所以可以更改dict,这在这里受到限制。为了避免此错误,您可以使用get方法,然后您的语句将如下所示:

for k in l:
    print k,"points to",l.get(k),"\n"

相关问题 更多 >

    热门问题