我想刪除字典值爲空的嵌套鍵。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