gpt4 book ai didi

python - 如何从 python 中的父/子 Heirarchal json 检索数据?

转载 作者:行者123 更新时间:2023-12-04 15:31:12 25 4
gpt4 key购买 nike

我调用了一个 API,该 API 返回了以下响应。我正在努力使用它并访问所有 child ,因为所有 child 也可以成为 parent 。

响应来自以下层次结构:

[
{
"id": 459029874,
"name": "Data",
"children": []
},
{
"id":762606928,
"name":"Top 25 KPIs",
"children":[
{
"id":97002306,
"name":"KPI Definition",
"children":[]
},
{
"id":1178185669,
"name":"DEU",
"children":[
{
"id":146196511,
"name":"DEU Development Path",
"children":[]
}
]
}
]
}]

我试图获得以下结果,然后将其放入数据框中:

{"id": 459029874, "name": "Data", "parent_id": ""},
{"id": 762606928, "name": "Top 25 KPIs", "parent_id": ""},
{"id": 97002306, "name": "KPI Definition", "parent_id": "762606928"},
{"id": 1178185669, "name": "DEU", "parent_id": "762606928"},
{"id": 146196511, "name": "DEU Development Path", "parent_id": "1178185669"}

等等……

最佳答案

创建一个yield结果然后yields子级递归地把子级传回生成器的生成器很方便解决这类问题。它提供了非常简洁的解决方案:

def flatten(l, parent = ''):
for item in l:
yield {'id': item['id'], 'name': item['name'], "parent_id": parent }
yield from flatten(item['children'], item['id'])

list(flatten(data))

结果:

[{'id': 459029874, 'name': 'Data', 'parent_id': ''},
{'id': 762606928, 'name': 'Top 25 KPIs', 'parent_id': ''},
{'id': 97002306, 'name': 'KPI Definition', 'parent_id': 762606928},
{'id': 1178185669, 'name': 'DEU', 'parent_id': 762606928},
{'id': 146196511, 'name': 'DEU Development Path', 'parent_id': 1178185669}]

关于python - 如何从 python 中的父/子 Heirarchal json 检索数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61244260/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com