代码之家  ›  专栏  ›  技术社区  ›  achraf karoui

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

  •  0
  • achraf karoui  · 技术社区  · 3 年前
    {
        "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": []}],
                    }
                ],
            },
        ],
    }
    

    所以我的目标是得到所有的id,它们是[1,2,4,5,12,14]。 有没有什么方法可以通过递归函数或其他方式实现呢?

    1 回复  |  直到 3 年前
        1
  •  2
  •   Andrej Kesely    3 年前

    可以使用递归。如果 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]