Changing key name in OrderedDict in a loop cause RuntimeError: OrderedDict mutated during iteration
Changing key name in OrderedDict in a loop cause RuntimeError: OrderedDict mutated during iteration
考虑以下问题,我有一个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)
你会如何解决这个问题?
您正试图修改您正在迭代的(Dict 键)同一个字典,这是不允许的。类似于您无法修改正在迭代的 Python 列表的内容。
为字典键创建一个列表,迭代该列表并更新字典键。
my_dic_keys = list(od.keys())
for key in my_dic_keys:
od[key+"_"] = od[key]
del od[key]
考虑以下问题,我有一个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)
你会如何解决这个问题?
您正试图修改您正在迭代的(Dict 键)同一个字典,这是不允许的。类似于您无法修改正在迭代的 Python 列表的内容。
为字典键创建一个列表,迭代该列表并更新字典键。
my_dic_keys = list(od.keys())
for key in my_dic_keys:
od[key+"_"] = od[key]
del od[key]