在循环中更改OrderedDict中的键名会导致运行时错误:OrderedDict在迭代过程中发生了变化

2024-09-27 07:30:19 发布

您现在位置:Python中文网/ 问答频道 /正文

考虑下面的问题,我有一个有序的DICT,并且只想更改密钥的名称。我们可以使用以下命令逐行执行此操作:

od[new_key] = od.pop(old_key)

然而,如果我尝试在一个循环中执行,我会得到一个RuntimeError: OrderedDict mutated during iteration

下面是一个重现问题的简短示例:

from collections import OrderedDict
 
od = OrderedDict()
od['a'] = 1
od['b'] = 2
od['c'] = 3
od['d'] = 4 

for key in od.keys():
    od[key+"_"] = od.pop(key)  

你将如何解决这个问题


Tags: key命令名称new密钥popolddict
1条回答
网友
1楼 · 发布于 2024-09-27 07:30:19

您正试图修改正在迭代的同一词典(Dict键),这是不允许的。类似于不能修改正在迭代的Python列表的内容

为字典键创建一个列表,遍历该列表并更新字典键

    my_dic_keys = list(od.keys())

    for key in my_dic_keys:
        od[key+"_"] = od[key]
        del od[key]

相关问题 更多 >

    热门问题