以有序方式提取动态嵌套字典中的字段

Extract fields in a dynamically nested dictionary in an ordered manner

给定以下字典 - 它是动态的,因此可能存在任何深度级别(嵌套结构):

data = {
    "level": {
        "system": {
            "text": "A Lorem ipsum colour."
        },
        "board": {
            "core": {
                "text": "Another one."
            }
        }
    },
    "peer": {
        "core": {
            "text": "B Lorem ipsum colour."
        },
        "main": {
            "text": "C Lorem ipsum colour."
        }
    }
}

目标是提取有序的 text 个元素(从上到下),结果应该是这样的:

result = "A Lorem ipsum colour. Another one. B Lorem ipsum colour. C Lorem ipsum colour.

我想我必须使用某种类型的递归,但我做不到。到目前为止我得到的 - 以及不起作用的 - 如下:

for k, v in data.items():
    if isinstance(v, dict):
        # i think i have to continue here on a deeper recursion level
    else:
        return v["text"]

此致

def dict_value(val: dict):
    for key, item in val.items():
        if type(item) == dict:
            dict_value(item)
        else:
            print(item)


dict_value(data)

为了得到原题中所述的结果:

data = {
    "level": {
        "system": {
            "text": "A Lorem ipsum colour."
        },
        "board": {
            "core": {
                "text": "Another one."
            }
        }
    },
    "peer": {
        "core": {
            "text": "B Lorem ipsum colour."
        },
        "main": {
            "text": "C Lorem ipsum colour."
        }
    }
}

def get_text(d, lst):
    for k, v in d.items():
        if isinstance(v, dict):
            get_text(v, lst)
        elif k == 'text':
            lst.append(v)
    return lst


print(' '.join(get_text(data, [])))

输出:

A Lorem ipsum colour. Another one. B Lorem ipsum colour. C Lorem ipsum colour.