[英]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.