如何避免“RuntimeError:字典在迭代期间更改大小”错误?

2024-01-13

假设我有一个列表字典:

d = {'a': [1], 'b': [1, 2], 'c': [], 'd':[]}

现在我想删除值为空列表的键值对。我尝试了这段代码:

for i in d:
    if not d[i]:
        d.pop(i)

但这给出了一个错误:

RuntimeError: dictionary changed size during iteration

我知道在迭代字典时不能添加或删除条目。我该如何解决这个限制以解决问题?


See Modifying a Python dict while iterating over it https://stackoverflow.com/questions/6777485/ for citations that this can cause problems, and why.


在 Python 3.x 和 2.x 中你可以使用 uselist https://docs.python.org/3/library/stdtypes.html#list强制复制密钥:

for i in list(d):

在Python 2.x中调用.keys https://docs.python.org/3/library/stdtypes.html#dict.keys制作了您可以在修改时迭代的键的副本dict:

for i in d.keys():

但在 Python 3.x 上,.keys返回一个查看对象 https://docs.python.org/3/library/stdtypes.html#dict-views相反,所以它不会修复你的错误。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何避免“RuntimeError:字典在迭代期间更改大小”错误? 的相关文章

  • Keras model.summary() 结果 - 了解参数数量

    我有一个简单的神经网络模型 用于使用 Keras Theano 后端 从用 python 编写的 28x28px 图像中检测手写数字 model0 Sequential number of epochs to train for nb ep
  • 如何在 Python 2.4 CSV 阅读器中禁用引用?

    我正在编写一个 Python 实用程序 需要解析一个我无法控制的大型且定期更新的 CSV 文件 该实用程序必须在仅提供 Python 2 4 的服务器上运行 CSV 文件根本不引用字段值 但Python 2 4版本的csv库 http ww
  • 将文件标记为从 Python 中删除?

    在我的一个脚本中 我需要删除当时可能正在使用的文件 我知道我无法删除正在使用的文件 直到它不再使用为止 但我也知道我可以将该文件标记为由操作系统 Windows XP 删除 我将如何在 Python 中做到这一点 以及另一个不依赖于 pyw
  • 如何使用appium自动化Android手机后退按钮

    我正在使用 Appium python 客户端库 对 Android 上的混合移动应用程序进行测试自动化 我无法找到任何方法来自动化或创建手势以使用 电话后退 按钮返回到应用程序的上一页 有没有可以使用的驱动函数 我尝试了 self dri
  • 完全定制的Python帮助用法

    我正在尝试使用 Python 创建完全自定义的 帮助 用法 我计划将其导入到许多我想要具有风格一致性的程序中 但遇到了一些麻烦 我不知道为什么我的描述忽略换行符 尝试过 和 我无法让 出现在 ARGS 行的 换行符之后 显然它们坐在自己的行
  • 是否可以在 Jupyter 笔记本中显示控制台?

    我希望能够使用 Jupyter 笔记本中的控制台在环境中进行摆弄 添加额外的单元格意味着我总是必须滚动到最底部或在我想要 类似控制台 文本字段的任何地方创建新单元格 是否可以有一个永久的控制台窗口 例如在窗口底部 Thanks 您可以启动连
  • python:UnboundLocalError:赋值前引用的局部变量“open”[重复]

    这个问题在这里已经有答案了 def read lines readFileName readfile txt f open readFileName r contents f read and so on read lines 当我运行这个
  • 从网站上抓取数字和详细信息的数据

    我想从网站上抓取联系电话以及快递服务的相应详细信息 我无法从所有快递服务中获取联系电话和其他详细信息 例如姓名地址和评级 我分析的数据位于脚本标签中 请提出修复此问题的建议 import requests import pandas as
  • 进行异步调用时,“yield”在龙卷风中如何工作?

    最近我在学习龙卷风简介 我遇到了以下代码 class IndexHandler tornado web RequestHandler tornado web asynchronous tornado gen engine def get s
  • 如何使用 selenium 获取 javascript 结果?

    我有以下代码 from selenium import selenium selenium selenium localhost 4444 chrome http some site com selenium start sel selen
  • 尝试将 cuda 与 pytorch 一起使用时出现运行时错误 999

    我为我的 Geforce 2080 ti 安装了 Cuda 10 1 和最新的 Nvidia 驱动程序 我尝试运行一个基本脚本来测试 pytorch 是否正常工作 但出现以下错误 RuntimeError cuda runtime erro
  • CryptoJS 和 Pycrypto 一起工作

    我正在使用 CryptoJS v 2 3 加密 Web 应用程序中的字符串 并且需要在服务器上使用 Python 对其进行解密 因此我使用 PyCrypto 我觉得我错过了一些东西 因为我无法让它工作 这是JS Crypto AES enc
  • 枚举上的 random.choice

    我想用random choice on an Enum I tried class Foo Enum a 0 b 1 c 2 bar random choice Foo 但是这段代码失败了KeyError 我怎样才能随机选择一个成员Enum
  • 执行许多插入重复键更新错误:未使用所有参数

    所以我一直在尝试使用 python 2 7 15 使用 mysql connector 执行此查询 但由于某种原因 它似乎不起作用并且总是返回错误 并非所有参数都被使用 表更新有一个主键 即 ID 这是我尝试运行此 SQL 的查询 sql
  • 如何使用资源模块来衡量函数的运行时间?

    我想使用Python代码测量函数的CPU运行时间和挂钟运行时间 此处建议资源模块 如何以 Python 代码 不是从终端 的形式分别测量函数的 CPU 运行时间和挂钟运行时间 https stackoverflow com q 192046
  • Python 中的颜色处理

    对于我的聚类 GUI 我目前对聚类使用随机颜色 因为我事先不知道最终会得到多少个聚类 在 Python 中 这看起来像 import random def randomColor return random random random ra
  • 对 Python 列表元素进行分组

    我有一个 python 列表 如下所示 my list 25 1 0 65 25 3 0 63 25 2 0 62 50 3 0 65 50 2 0 63 50 1 0 62 我想根据以下规则对它们进行排序 1 gt 0 65 0 62 l
  • 设置字符串中单词或字符数的限制

    假设我有一个字符串元素列表 wordlist hi what s up home diddle mc doo Oh wise master kakarot hello have a da 我希望列表中的每个元素最多包含 3 个单词或 20
  • 将 .parquet 编码为 io.Bytes

    目标 将 Parquet 文件上传到 MinIO 这需要将文件转换为字节 我已经能够做到这一点了 csv json and txt bytes data to csv encode utf 8 bytes json dumps self d
  • 使用 TkInter 绑定设置不可交互(点击)覆盖

    我已经浏览了其他几篇关于类似问题的帖子 所有这些似乎都指向this https stackoverflow com questions 29458775 tkinter see through window not affected by

随机推荐