admin管理员组文章数量:1565357
问题
项目中对搜索结果进行过滤使用了OrderedDict ,有一个规则是要将其中的一些元素进行删除,在使用下面代码的时候报上述错误, 编程语言py3.7
from collections import OrderDict
search_res = OrderedDict([("k1", "v1"), ("k2", "v2"), ("k3", "v3")])
for k, v in search_res.items():
if k == 'k2': # 假设规则是删除k2
del search_res[k]
上述程序会报这个问题:
RuntimeError: OrderedDict mutated during iteration
原因
边遍历边操作,导致元素发生变化,这样遍历的对象就不是一个固定的容器,导致出现runtimeError
for k, v in search_res.items()
...
del search_res[k]
解决办法
遍历的时候就固定好遍历列表
for k in list(search_res.keys()): # 固定了遍历的对象
if k == 'v2':
del search_res[k]
参考
- https://stackoverflow/questions/52549623/runtimeerror-ordereddict-mutated-during-iteration-python3/52549728
- https://blog.csdn/weixin_41713230/article/details/88842754
- https://zhuanlan.zhihu/p/110407087
本文标签: OrderedDictRuntimeErroriterationmutated
版权声明:本文标题:RuntimeError: OrderedDict mutated during iteration 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dongtai/1726224272a1061317.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论