使用 python 通过深层嵌套字典中的特定键获取所有值

get all values by a specific key in a deep nested dict using python

{
    "id": 1,
    "name": "Test",
    "fils": [
        {"id": 2, "name": "Test", "fils": []},
        {"id": 4, "name": "Test", "fils": []},
        {
            "id": 5,
            "name": "Test",
            "fils": [
                {
                    "id": 12,
                    "name": "Test",
                    "fils": [{"id": 14, "name": "test", "fils": []}],
                }
            ],
        },
    ],
}

所以我的目标是获取所有 [1,2,4,5,12,14] 的 ID。 有什么方法可以使用递归函数或其他方式得到它吗?

你可以使用递归。如果 dct 是问题中的字典,则:

def get_ids(d):
    if isinstance(d, dict):
        for k, v in d.items():
            if k == "id":
                yield v
            else:
                yield from get_ids(v)
    elif isinstance(d, list):
        for v in d:
            yield from get_ids(v)


ids = list(get_ids(dct))
print(ids)

打印:

[1, 2, 4, 5, 12, 14]