【发布时间】:2019-09-28 04:47:11
【问题描述】:
假设你有这本词典
{
"alpha": "one",
"beta": {
"beta1": "two",
"beta2": "second two"
},
"gamma": {
"delta": {
"delta1": "three",
"delta2": "second three"
},
"epsilon": {
"zeta": {
"zeta1": "four",
"zeta2": "second four"
},
"epsilon1": "five",
"epsilon2": "second five"
}
}
}
并且您希望每个第 3 个(或更深的)嵌套字典都被展平。所以像这样的输出。
{
"alpha": "one",
"beta": {
"beta1": "two",
"beta2": "second two"
},
"gamma": {
"delta": {
"delta1": "three",
"delta2": "second three"
},
"epsilon": {
"zeta.zeta1": "four",
"zeta.zeta2": "second four",
"epsilon1": "five",
"epsilon2": "second five"
}
}
}
如何实现这一目标?
字典的标签和结构是动态的(我想重构多个结构不同的字典,但每隔三个嵌套字典就有一条硬线)
我知道我可以遍历每个值,但我怎么知道我何时到达第三个嵌套字典?
def loopDict(d):
for k, v in d.iteritems():
if type(v) is dict:
loopDict(v)
else:
print "{0} : {1}".format(k, v)
附:我可以使用flatten_json 模块来展平每个字典
【问题讨论】:
-
你能解释一下你想用这个解决什么问题吗?通常扁平化这样的结构不会改善数据处理。
-
按照你想要的方式处理数据会很糟糕
-
您可以在
loopDict函数中添加一个“级别”/“深度”参数,并在每次递归时增加它,这就是为什么您知道何时达到第三级。
标签: python json nested flatten