我想删除字典值为空的嵌套键。Python迭代嵌套字典以删除键
实施例:
d = {'A': {'a': {1: [('string1', 'string2')]}},
'B': {'b': {}},
'C': {}
}
对于每个的主键,还有一个子密钥和子子密钥。 如果任何键值为空,我想删除整个键。
但是,我收到错误:RuntimeError: dictionary changed size during iteration
当我通过字典循环删除空值。
for k,v in d.iteritems():
if not v:
del d[k]
else:
for a,b in v.iteritems():
if not b:
del d[k][a]
所需的输出:
d = {'A': {'a': {1: [('string1', 'string2')]}}}
你不能从一个集合,同时通过它迭代删除项目。在迭代期间,您需要保留要在集合中删除条目的索引/引用,并在遍历整个字典后将其删除。 –
错误很明显。在迭代时不要修改(特别是大小)迭代器。 – Kasramvd
您正在修改迭代过的内容。最激动人心的事情就是创建一个包含你想要的东西的新数据结构。 – pvg