Python3 - пройти по дереву и получить все наборы дочерних узлов листьев

ken wang спросил: 27 ноября 2017 в 06:09 в: python-3.x

У меня есть файл json, и его структура похожа на вложенное дерево:

{
    "sub": [
    {
        "code": "01",
        "name": "a"
    },
    {
        "code": "02",
        "name": "b",
        "sub": [
        {
            "code": "0201",
            "name": "b1"
        },
        {
            "code": "0202",
            "name": "b2",
            "sub":[{
                "code": "020201",
                "name": "b21"
            },{
                "code": "020202",
                "name": "b22"
            }]
        }]
    },
    {
        "code": "03",
        "name": "c",
        "sub": [
        {
            "code": "0301",
            "name": "c1"
        },
        {
            "code": "0302",
            "name": "c2"
        }]
    }]
}

Я хочу, чтобы алгоритм получал все наборы дочерних узлов листьев (необходим только атрибут name) , В приведенном выше примере должно возвращаться:

[
 ['a'],
 ['b1'],
 ['b21','b22'],
 ['c1','c2']
]

Обратите внимание, что каждый элемент является листовым узлом, а узлы в каждой группе являются братьями и сестрами.

Как я могу реализовать это в python3.x?

def traverse(tree):
    #how to implement this function?with open('demo.json') as f:
    tree = json.load(f)
    traverse(tree)

0 ответов