簡體   English   中英

如何根據級別編號制作嵌套的 python 字典

[英]How to make a nested python dictionary based on level numbers

如何根據級別構建嵌套的 python 字典,像這樣?

遞歸 function 如何通過 int 級別?

{
"aggs": {
      "cat_level_1": {
            "terms": {
                 "field": "cat_level_1"
            },
              "aggs": {
                  "cat_level_2": {
                      "terms": {
                            "field": "cat_level_2"
                           },
                            "aggs": {
                                 "cat_level_3": {
                                     "terms": {
                                          "field": "cat_level_3"
                                    }
                              }
                       }
                   }
             }
       }
  }
}

我們可以從最深層次構建字典,在每個層次上包裝之前構建的字典。

def dict_with_depth_of(n):
    return {
        "aggs": {
            f"cat_level_{n}": {
                "terms": {
                    "field": f"cat_level_{n}"
                }
            }
        }
    }

def nested_dict(n):
    d = None
    for i in reversed(range(1, n + 1)):
        new_d = dict_with_depth_of(i)
        if d is not None:
            new_d["aggs"][f"cat_level_{i}"] = d
        d = new_d
    return d

print(nested_dict(3))

Output:

{'aggs': {'cat_level_1': {'aggs': {'cat_level_2': {'aggs': {'cat_level_3': {'terms': {'field': 'cat_level_3'}}}}}}}}

這是正確答案

def dict_with_depth_of(n):
    return {
        "aggs": {
            f"cat_level_{n}": {
                "terms": {
                    "field": f"cat_level_{n}"
                }
            }
        }
    }


def nested_dict(n):
    d = None
    for i in reversed(range(1, n + 1)):
        new_d = dict_with_depth_of(i)
        if d is not None:
            new_d["aggs"][f"cat_level_{i}"].update(d)
        d = new_d

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM