python - 字典在迭代期间改变大小

标签 python dictionary python-3.x iteration

我查看了与该主题相关的答案数据库,但找不到答案,本质上我正在循环字典,我收到“字典更改大小”运行时错误,但我弹出了取出一个键和值并在迭代恢复之前插入另一个键和值。

       for patterns in dict_copy.keys():
            new_tuple = ()
            for items in range(len(patterns)):
                if patters[items] not in exclusion:
                    new_tuple += (patterns[items],)
            dict_copy[new_tuple] = dict_copy.get(patterns)
            dict_copy.pop(patterns)

我正在使用的字典的形式为:{("A","B","C","D"):4, ("B","A","C","D”)“2...} 我对它认为我正在改变字典大小的事实感到困惑

最佳答案

该错误略有误导性。它试图告诉您的是,在迭代字典时不应该进行任何结构更改(插入/删除)。

解决此问题的一个简单方法是将结果放入单独的字典中:

   new_dict = {}
   for patterns in dict_copy.keys():
        new_tuple = ()
        for items in range(len(patterns)):
            if patters[items] not in exclusion:
                new_tuple += (patterns[items],)
        new_dict[new_tuple] = dict_copy.get(patterns)
   dict_copy = new_dict

关于python - 字典在迭代期间改变大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13593585/

相关文章:

java - 在原子值的情况下从 map 中删除键

python - 使用带括号的字符串需要帮助

python - 导入类出现名称错误

python - 为模块中的每个函数创建帮助热线

python - 如何为按时间排序的 matplotlib 图序列制作动画

Python如何在迭代字典返回元组时按键访问

Java 基于时间的映射/缓存,带有过期键

python - 拆分列 >> 获取唯一值 >> 将唯一值添加回列

python - 绑定(bind)到 tkinter 中的最小化/最大化按钮

Python正则表达式-获取时间和日期