-
慕尼黑5688855
这是使用递归的解决方案: def add_to_flare(n, flare): children = flare["children"] if len(n) == 2: children.append({"name": n[0], "value": n[1]}) else: for c in children: if c["name"] == n[0]: add_to_flare(n[1:], c) return children.append({"name": n[0], "children": []}) add_to_flare(n[1:], children[-1]) flare = {"name": "root", "children": []} for i in data: add_to_flare(i, flare)为了很好地显示它,我们可以使用这个json库:import jsonprint(json.dumps(flare, indent=1)){ "name": "root", "children": [ { "name": "a", "children": [ { "name": "b", "children": [ { "name": "c", "value": 50 }, { "name": "d", "value": 100 }, { "name": "e", "value": 67 } ] }, { "name": "g", "children": [ { "name": "c", "value": 12 } ] } ] }, { "name": "q", "children": [ { "name": "k", "children": [ { "name": "c", "value": 11 } ] }, { "name": "b", "children": [ { "name": "p", "value": 11 } ] } ] } ]}
-
慕雪6442864
试试这个:master = []for each in your_list: head = master for i in range(len(each)): names = [e['name'] for e in head] if i == len(each) - 2: head.append({'name': each[i], 'value': each[i+1]}) break if each[i] in names: head = head[names.index(each[i])]['children'] else: head.append({'name': each[i], 'children': []}) head = head[-1]['children']结果:[{'children': [{'children': [{'name': 'c', 'value': 50}, {'name': 'd', 'value': 100}, {'name': 'e', 'value': 67}], 'name': 'b'}, {'children': [{'name': 'c', 'value': 12}], 'name': 'g'}], 'name': 'a'}, {'children': [{'children': [{'name': 'c', 'value': 11}], 'name': 'k'}, {'children': [{'name': 'p', 'value': 11}], 'name': 'b'}], 'name': 'q'}]请注意name和children在本词典中被翻转,因为它是无序的。但最终的结构是一样的。把它放在根目录下以获得你的目标:my_dict = {'name':'root', 'children': master}
-
Cats萌萌
假设您的列表列表存储在 variable 中l,您可以执行以下操作:o = []for s in l: c = o for i, n in enumerate(['root'] + s[:-1]): for d in c: if n == d['name']: break else: c.append({'name': n}) d = c[-1] if i < len(s) - 1: if 'children' not in d: d['children'] = [] c = d['children'] else: d['value'] = s[-1]这样o[0]就变成了:{'children': [{'children': [{'children': [{'name': 'c', 'value': 50}, {'name': 'd', 'value': 100}, {'name': 'e', 'value': 67}], 'name': 'b'}, {'children': [{'name': 'c', 'value': 12}], 'name': 'g'}], 'name': 'a'}, {'children': [{'children': [{'name': 'c', 'value': 11}], 'name': 'k'}, {'children': [{'name': 'p', 'value': 11}], 'name': 'b'}], 'name': 'q'}], 'name': 'root'}