Форум сайта python.su
186
> мне потребуется использовать к примеру этот класс дерева
Зачем тебе класс? Просто заполняй списки через рекурсию как я тебе показал, этого будет достаточно. Функция get_parent возвращает список дочерних элементов по этому сделать проверку leaf / expanded можно с её помощью.
Офлайн
0
Сделал так :
mylist =[{'id': '1', 'name': 'Title1', 'id_parent': '0'}, {'id': '2', 'name': 'title2', 'id_parent': '1'}, {'id': '3', 'name': 'title3', 'id_parent': '1'}, {'id': '4', 'name': 'Title4', 'id_parent': '0'}, {'id': '5', 'name': 'title5', 'id_parent': '4'}] def get_parent(id_parent): c = [] for x in mylist: if not x["id"] == id_parent and x["id_parent"] == id_parent: if x["id_parent"] == "0": x['expanded'] = True else: x['leaf'] = True c.append(x) return(c) def get_tree(t, n=0): list = [] for x in get_parent(t): all_stor = {} all_stor["text"] = x['name'] all_stor["id"] = x['id'] if(x.get('expanded')): all_stor["expanded"] = x['expanded'] else: all_stor["leaf"] = x['leaf'] get_tree(x["id"], n+1) list.append(all_stor) return(list) main = get_tree("0") print(main)
[{'id_parent': '0', 'id': '1', 'expanded': True, 'name': 'Title1'}, {'id_parent': '0', 'id': '4', 'expanded': True, 'name': 'Title4'}]
Офлайн
1
“Дедушка Мороз, я так старалась, так тебя ждала, платьице погладила, пирог испекла и стишок выучила, а когда ты пришёл, я так обрадовалась, так побежала тебя встречать… в общем платьице я порвала, пирог уронила, а стишок забыла”
“Ну девочка, ну ёб твою мать!!!!”
(с)
Ambassadorрукалицо.жпг
if not x == id_parent
Ребят, помогите, пож-та, мне необходимо написать на python алгоритм построения дерева
Офлайн
186
> Как мне получить все словари что бы их обрабатывать и заполнять списки необходимого формата?
def get_tree(t): lst = [] for x in get_parent(t): all_stor = {} all_stor["text"] = x['name'] all_stor["id"] = x['id'] if x.get('expanded'): all_stor["expanded"] = x['expanded'] else: all_stor["leaf"] = x['leaf'] lst.append([all_stor, get_tree(x["id"])]) return lst
Офлайн
0
Rodegast - А возможно ли заполнять список форматом который мне требуется сразу же в функции get_tree, т.е all_stor сделать в виде
[children:[{text: "Title 1", id: '1', expanded: true,children: [{text: "title2", leaf: true ,},{text: "title3", leaf: true}]},{text: "Title4", id: '4', expanded: true, children: [{text: "title5", leaf: true,} ]}]]
Отредактировано Ambassador (Окт. 5, 2018 14:28:36)
Офлайн
0
У меня получается заполнить список, статично:
q = [] i = [] f = [] h = [] a = {} b = {'text': "Title 1", 'id': 1, 'expanded': True} c = {'text': "title2", 'leaf': True} d = {'text': "title3", 'leaf': True} e = {'text': "Title 4", 'id': '4', 'expanded': True} g = {'text': "title5", 'leaf': True} i.append(c) i.append(d) f.append(g) b['children'] = i e['children'] = f h.append(b) h.append(e) a['children'] = h main = [a] print(main)
Офлайн