2024-10-05 10:56:34 发布
网友
我运行了这段代码,得到如下错误:
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循环中打印
这是因为循环引入了一个新的局部变量k,这意味着局部变量的字典在循环中发生了变化。在
k
最简单的解决方案(如果您确实需要这样做,尽管这通常是一个坏主意的征兆)是复制字典-例如:l = dict(locals())。这样一来,原稿的更新就不会引起问题。在
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方法,然后您的语句将如下所示:
get
for k in l: print k,"points to",l.get(k),"\n"
这是因为循环引入了一个新的局部变量
k
,这意味着局部变量的字典在循环中发生了变化。在最简单的解决方案(如果您确实需要这样做,尽管这通常是一个坏主意的征兆)是复制字典-例如:
l = dict(locals())
。这样一来,原稿的更新就不会引起问题。在这是因为循环引入了一个新的局部变量k,这意味着局部变量的字典在循环中被改变了。在
最简单的解决方案是在循环之前定义k,这样一旦循环开始,locals()就不会改变。在
错误的原因是Python认为,由于您通过键访问dict,所以可以更改dict,这在这里受到限制。为了避免此错误,您可以使用
get
方法,然后您的语句将如下所示:相关问题 更多 >
编程相关推荐