Мне нужно преобразовать списки данных в иерархический вложенный словарь в Python.Структура (отец - ребенок).
Это мои данные.
list_data = [
{
"id": 2,
"father_id": 0,
"desc": "Oficial de Negocios Senior",
"name": "PEDRO MARTIN SOTO ROSALES"
},
{
"id": 4,
"father_id": 2,
"desc": "Ejecutivo comercial",
"name": "Adriana Paredez"
},
{
"id": 5,
"father_id": 2,
"desc": "Ejecutivo comercial",
"name": "Hugo Miranda"
},
{
"id": 3,
"father_id": 2,
"desc": "Ejecutivo comercial",
"name": "Mario Azcona"
},
{
"id": 6,
"father_id": 3,
"desc": "vendedor",
"name": "Diana Diaz"
}
]
Я уже пытался использовать эту рекурсивную функцию, и я правильно понял структуру, но она объединяет еще 2 копии первых трех дочерних элементов, что мне действительно не нужно.Корневым отцом является элемент со значением Father_id = 0
def build(loc_key):
children = {row['id']: {'name': row['name'], 'desc': row['desc'],
'child':[]} for row in list_data if row['father_id'] == loc_key}
data = {}
for key, value in children.items():
data[key] = value
for item in list_data:
if item['father_id'] == key:
data[key]['child'].append(build(key))
return data
print(build(0))
Это в основном то, что мне нужно, чтобы получить
data = {
2: {'desc': 'Oficial de Negocios Senior',
'name': 'PEDRO MARTIN SOTO ROSALES',
'child':
[
{3: {'desc': 'Ejecutivo comercial',
'name': 'Mario Azcona',
'child': [
{6: {'desc': 'vendedor',
'name': 'Diana Diaz',
'child': []}}]},
4: {'desc': 'Ejecutivo comercial',
'name': 'Adriana Paredez',
'child': []},
5: {'desc': 'Ejecutivo comercial',
'name': 'Hugo Miranda',
'child': []}
PD: мне нужно поддерживать его динамически, потому что пользователиможно добавлять детей в базу данных.