Предположим, у вас есть этот словарь
{
"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"
}
}
}
И вы хотите, чтобы каждый третий (или более глубокий) вложенный словарь был сведен.Таким образом, вывод выглядит следующим образом.
{
"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)
PS Я могу сгладить каждый словарьиспользуя модуль flatten_json