gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 07:02:41 25 4
gpt4 key购买 nike

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

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 循环中打印

from sgmllib import SGMLParser

class URLLister(SGMLParser):
def reset(self):
SGMLParser.reset(self)
self.data = []
def start_a(self, attrs):
href = [v for k , v in attrs if k == 'href']
if href:
self.data.extend(href)

if __name__ == '__main__':
import urllib
sock = urllib.urlopen("http://diveintopython.org")

parser = URLLister()
html = sock.read()

parser.feed(html)

sock.close()
parser.close()
for url in parser.data: print url
l = locals()

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

最佳答案

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

最简单的解决方案(如果你真的需要这样做,虽然通常这是一个坏主意的标志)是复制字典 - 例如:l = dict(locals())。这样更新原件就不会出现问题。

关于python - 迭代字典时出现奇怪的运行时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14144043/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com