我们有这样的数据
input = {
'a': 3,
'b': {'g': {'l': 12}},
'c': {
'q': 3,
'w': {'v': 3},
'r': 8,
'g': 4
},
'd': 4
}
事先不知道将有多少个嵌套级别 我们需要获取最终值的完整地址,所有点都用点或另一个特殊字符分隔 就像这样:
a:3
b.g.l: 12
c.q: 3
c.w.v: 3
etc
我试着用递归函数来解决这个问题.
def recursive_parse(data: dict, cache: Optional[list]=None):
if cache is None:
cache = []
for k in data:
cache.append(k)
if not isinstance(data[k], dict):
print(f"{'.'.join(cache) } :{data[k]}")
cache.clear()
else:
recursive_parse(data[k], cache)
但我在"记住"嵌套词典的前一个关键字时遇到了问题.
a :3
b.g.l :12
c.q :3
w.v :3
r :8
g :4
d :4
解决此问题的正确算法是什么?