我们要完成的任务是输出JSON
字典,并且对其中的每个元素,要输出它的所有父节点。那么很容易想到的做法就是递归解析。
我参考了别人的一些文章和回答,总结了如下的解决方案:
from __future__ import print_function
import json
def dict_generator(indict, pre=None):
pre = pre[:] if pre else []
if isinstance(indict, dict):
for key, value in indict.items():
if isinstance(value, dict):
if len(value) == 0:
yield pre+[key, '{}']
else:
for d in dict_generator(value, pre + [key]):
yield d
elif isinstance(value, list):
if len(value) == 0:
yield pre+[key, '[]']
else:
for v in value:
for d in dict_generator(v, pre + [key]):
yield d
elif isinstance(value, tuple):