"banshi = banshi()\n banshi1 = banshi.copy()\n hrefs = []\n for k, v in banshi1.items():\n for i, j in v.items():\n lists = []\n for z in j:\n driver = webdriver.Chrome()\n driver.get(z)\n sleep(3)\n try:\n alert = driver.switch_to.alert\n alert.accept()\n except NoAlertPresentException:\n pass\n try:\n driver.find_element(By.XPATH, "/html/body/div/div[2]/div[2]/div[1]/div[2]/div/ul/li[5]").click()\n ul = driver.find_element(By.XPATH, "/html/body/div/div[2]/div[2]/div[1]/div[1]")\n li_list = ul.find_elements(By.TAG_NAME, "a")\n for i in li_list:\n lists.append(i.get_attribute("href"))\n print(i.get_attribute("href"))\n driver.quit()\n v[i] = lists # 修改副本中的值\n except:\n pass\n banshi[k][i] = v[i] # 将副本中修改后的值赋给原字典\n print(banshi)Traceback (most recent call last):\n File "C:\Users\Lenovo\Desktop\pycharm\hebei - 副本\run\test.py", line 17, in \n for i, j in v.items():\nRuntimeError: dictionary changed size during iteration用中文回答内容:这个错误是因为在迭代字典时,对字典进行了修改。在这段代码中,你尝试在循环中修改字典banshi1和banshi。这会导致迭代时字典大小发生变化,引发RuntimeError。\n\n为了解决这个问题,你可以创建一个副本字典,在副本字典上进行修改,然后再将修改后的值赋给原始字典。\n\n在你的代码中,你已经创建了副本字典banshi1,但是在修改时,你直接将修改后的值赋给了原始字典banshi。这会导致字典banshi的大小发生变化。\n\n要解决这个问题,你可以使用深拷贝方法来创建副本字典,这样可以确保在修改副本字典时不会影响原始字典。可以使用copy模块中的deepcopy方法来实现深拷贝。\n\n修改代码如下:\n\npython\nimport copy\n\nbanshi = banshi()\nbanshi1 = copy.deepcopy(banshi) # 使用深拷贝创建副本字典\nhrefs = []\nfor k, v in banshi1.items():\n for i, j in v.items():\n lists = []\n for z in j:\n driver = webdriver.Chrome()\n driver.get(z)\n sleep(3)\n try:\n alert = driver.switch_to.alert\n alert.accept()\n except NoAlertPresentException:\n pass\n try:\n driver.find_element(By.XPATH, \"/html/body/div/div[2]/div[2]/div[1]/div[2]/div/ul/li[5]\").click()\n ul = driver.find_element(By.XPATH, \"/html/body/div/div[2]/div[2]/div[1]/div[1]\")\n li_list = ul.find_elements(By.TAG_NAME, \"a\")\n for i in li_list:\n lists.append(i.get_attribute(\"href\"))\n print(i.get_attribute(\"href\"))\n driver.quit()\n v[i] = lists # 修改副本中的值\n except:\n pass\n banshi[k][i] = v[i] # 将副本中修改后的值赋给原字典\nprint(banshi)\n\n\n这样修改后,你应该能够避免"dictionary changed size during iteration"错误。\n

Python 字典迭代修改错误:

原文地址: https://www.cveoy.top/t/topic/qshP 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录