У меня есть модель Django с внешним ссылочным внешним ключом, поэтому моя модель (как класс в ее самой базовой форме) выглядит следующим образом:
class MyObj(object):
def __init__(self, id, ttl, pid):
self.id = id
self.name = ttl
self.parentid = pid
Таким образом, образец моих данных можетвыглядит так:
nodes = []
nodes.append(MyObj(1,'a',0))
nodes.append(MyObj(2,'b',0))
nodes.append(MyObj(3,'c',1))
nodes.append(MyObj(4,'d',1))
nodes.append(MyObj(5,'e',3))
nodes.append(MyObj(6,'f',2))
Я дошел до того, что могу преобразовать это во вложенный словарь:
{'a': {'c': {'e': {}}, 'd': {}}, 'b': {'f': {}}}
используя Преобразование списка дерева в иерархию dict как руководство, но мне нужно это в форме, которую я могу использовать для фильтра unordered_list Django.
Итак, мой вопрос, как я могу получить из (любого) вложенного словаря ввложенный список / кортеж или прямо из исходных данных во вложенный список?Кажется, я не могу получить рекурсивную функцию для правильного вложения списков (так как в списке я не могу ссылаться на «поддеревья» по имени)
eval (string_rep_of_dictionary.replace (':', ',') .replace (' {',' ['). replace ('} ','] ')), кажется, вот-вот приведет меня туда, но это кажется ужасным решением?