1

考虑以下问题,我有一个 OrderedDict,只想更改键的名称。我们可以使用以下命令逐行执行:

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)  

你将如何解决问题?

4

1 回答 1

1

您正在尝试修改您正在迭代的(字典键)相同的字典,这是不允许的。类似于您无法修改您正在迭代的 Python 列表的内容。

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

    my_dic_keys = list(od.keys())

    for key in my_dic_keys:
        od[key+"_"] = od[key]
        del od[key]
于 2021-08-30T11:34:11.833 回答