Преобразование списка словарей в словарь словарей

У меня есть список словарей в 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)
Вернуться на верх