遍历python中涉及嵌套列表和嵌套字典的数据结构

Nic*_*las 5 dictionary list python-3.x

我正在尝试遍历这种树,其想法是获取所有“标题”。请注意,这个结构可以变得更大,这意味着每个标题将来都可以有更多的子类别。任何想法?

我正在尝试这样做:


def continue_searching(item):
    for i in len(item):
        if categories[i]["subcategories"]:
            continue_searching(i["subcategories"])
            print(i["subcategories"])


def give_titles(categories):
    for i in len(categories):
        if categories[i]["subcategories"]:
            continue_searching(i["subcategories"])
        print(i['title'])


categories = [
    {
        "title": "Food",
        "subcategories": [
            {"title": "Bread"},
            {
                "title": "Meat",
                "subcategories": [
                    {"title": "Pork",
                     "subcategories": [
                         {"title": "White Pork"},
                         {"title": "Red Pork"}
                     ]
                     },
                    {"title": "Beef"},
                ],
            },
            {"title": "Cheese"},
        ],
    },
    {"title": "Drinks"},
]

give_titles(categories)


Run Code Online (Sandbox Code Playgroud)

预期输出:

Food
-Bread
-Meat
--Pork
---White Pork
---Red Pork
--Beef
-Cheese
Drinks
Run Code Online (Sandbox Code Playgroud)

请注意,我没有使用递归,因为我不清楚何时停止调用,并且我不想使调用堆栈饱和。

md2*_*rpe 2

定义这个函数:

def write_titles(cats, depth=0):
  for c in cats:
    print('-'*depth, c['title'])
    write_titles(c.get('subcategories', []), depth+1)
Run Code Online (Sandbox Code Playgroud)

然后使用 来调用它write_titles(categories)