【发布时间】:2017-12-13 01:45:07
【问题描述】:
对不起,我做错了什么?
我有嵌套的 dict,我希望将其转储到 json 中。
[{'text': 'Root', 'children': [{'text': 'X', 'children': [None, None], 'id': 2}, {'text': 'Y', 'children': [], 'id': 3}], 'id': 1}]
我需要从中删除所有“无”值。这是我的代码:
for items in sub_tree_dicts:
del_null(items['children'])
def del_null(childrens):
for child in childrens:
if child is None:
childrens.remove(child)
else:
del_null(child['children'])
不幸的是,代码没有按预期工作,只从列表中删除第一个“无”。我哪里错了?
谢谢。
【问题讨论】:
-
在迭代字典时不要修改字典。您的
childrens.remove(child)正在破坏您的 for 循环。 -
您知道当您想转换为 JSON 时不需要删除
None,因为json.dumps()会将其修改为null...? -
@juanpa.arrivillaga:你是对的。我已经更正了我的评论。
-
想一想当您删除
None时会发生什么,就像您尝试删除[None, None, 42]之类的东西一样