-1
我想删除了多层次键删除一个关键形式的多层次字典。我的代码来创建字典低于:从字典
from collections import defaultdict
f = lambda: defaultdict(f)
d = f()
d['A']['B1']['C1'] = 1
d['A']['B1']['C2'] = 2
d['A']['B1']['C3'] = 3
d['A']['B2']['C1'] = 15
d['A']['B2']['C2'] = 20
现在我想删除“C3”键。在字典中的最终结构为:
{
"A": {
"B1": {
"C1": 1,
"C2": 2
},
"B2": {
"C1": 15,
"C2": 20
}
}
}
我尝试:
for level_1_key, level_1_dct in d.items():
for level_2_key, level_2_dct in level_1_dct.items():
for level_3_key, level_value in level_2_dct.items():
if level_value == 3:
d[level_1_key][level_2_key].pop(level_3_key, 'None')
,当运行上面的代码我收到以下错误:
RuntimeError: dictionary changed size during iteration
所以,任何人都可以请帮助我来解决和理解这个问题。
您不得在迭代期间删除它。以某种方式将其标记为已删除并在循环外部删除 –
为列表level_3_key中的items' ::'制作副本(level_2_dct.items()):'或重建理解词典 –