Python 字典迭代修改错误:"dictionary changed size during iteration" 解决方法
"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 python\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
原文地址: https://www.cveoy.top/t/topic/qshP 著作权归作者所有。请勿转载和采集!