Преобразование списка словарей в словарь словарей
У меня есть список словарей в python3, которые образуют структуру типа пирамиды с 5 уровнями сверху, и мне нужно преобразовать словарь в базе в одно значение. например, список:
[{"name":"exampleName2", "referal":"exampleName1", "data":"data"}, {"name":"exampleName3", "referal":"exampleName2", "data":"data"}, {"name":"exampleName4", "referal":"exampleName3", "data":"data"}]
необходимо преобразовать в:
{"name:"exampleName1", "refered":[{"name:"exampleName2", "refered":[{"name:"exampleName3", "refered":[{"name:"exampleName4", "refered":[], "data":"data}], "data":"data}], "data":"data}], "data":"data}
Я мог бы сделать много циклов for и while, но я думаю, что есть быстрый метод. Мой метод на данный момент таков:
try:
porOrdenar = LISTADO
ordenados = []
while len(porOrdernar) > 0:
n = 0
while n < len(porOrdernar):
if porOrdernar[n]["referal"]=="uno":
ordenados.append(porOrdernar[n])
porOrdernar.pop(n)
for element in ordenados:
unirReferidos(porOrdernar, n, element1)
for element1 in element["referidos"]:
unirReferidos(porOrdernar, n, element1)
for element2 in element1["referidos"]:
unirReferidos(porOrdernar, n, element2)
for element3 in element2["referidos"]:
unirReferidos(porOrdernar, n, element3)
n +=1
except IndexError:
pass
def unirReferidos(porOrdernar, n, element3):
if porOrdernar[n]["referal"] == element3["name"]:
element3["refered"].append(porOrdernar[n])
porOrdernar.pop(n)