gpt4 book ai didi

python - 修改Preorder Tree Traversal到Python结构

转载 作者:太空宇宙 更新时间:2023-11-04 01:29:54 25 4
gpt4 key购买 nike

您好,我正在尝试表示修改后的预序树遍历作为 Python 结构,我可以输出到 json,因为我当前的目标是在 jstree 中显示树。

假设我有一张如图所示的表格 http://imrannazar.com/Modified-Preorder-Tree-Traversal (在我的例子中,每一行也有一个 parent_id)像这样

    Node ID   Name       Left MPTT value     Right MPTT value       ParentID
1 (Root) 1 16 -1
2 Articles 2 11 1
5 Fiction 3 8 2
7 Fantasy 4 5 5
8 Sci-fi 6 7 5
6 Reference 9 10 2
3 Portfolio 12 13 1
4 Contact 14 15 1

jstree的Json格式是这样的

    [
{
"data" : "Root",
"children" : [
{
"data":"Articles",
"children : [
{"data":"Fiction"},
{"data":"Reference"}
]
},
{"data":"Portfolio"},
{"data":"Contact"}]
},
]

如何将上表转换为 Python 格式以输出这个 json。

我想过以某种方式使用嵌套字典如下

    class NestedDict(dict):
def __missing__(self, key):
return self.setdefault(key, NestedDict())

但不确定我需要的算法。

非常感谢任何帮助。

谢谢

最佳答案

你真的应该尝试自己做,展示你做了什么以及哪里做不到。但是我有几分钟的空闲时间,所以...

要解析表格,您可以使用 csv模块。我会把它留给你。

可能不是最佳解决方案,但这样做可以:

datain = (
(1,'Root',1,16,-1),
(2,'Articles',2,11,1),
(5,'Fiction',3,8,2),
(7,'Fantasy',4,5,5),
(8,'Sci-fi',6,7,5),
(6,'Reference',9,10,2),
(3,'Portfolio',12,13,1),
(4,'Contact',14,15,1),
)

def convert_to_json(data):
node_index = dict()
parent_index = dict()
for node in data:
node_index[node[0]] = node
parent_index.setdefault(node[4],[]).append(node)

def process_node(index):
result = { 'data' : node_index[index][1] }
for node in parent_index.get(index,[]):
result.setdefault('children',[]).append(process_node(node[0]))
return result

node = process_node(1)
return [node]

返回:

[
{
'data': 'Root',
'children': [
{
'data': 'Articles',
'children': [
{
'data': 'Fiction',
'children': [
{ 'data': 'Fantasy' },
{ 'data': 'Sci-fi' }
]
},
{ 'data': 'Reference' }
]
},
{ 'data': 'Portfolio' },
{ 'data': 'Contact' }
]
}
]

关于python - 修改Preorder Tree Traversal到Python结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14571067/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com