Python 无限级分类树状结构生成算法的实现
算法介绍
Python 无限级分类树状结构生成算法用于将任意多层级别的数据转化为树状结构,方便数据的展示和处理。该算法通过递归的方式实现,可以适用于各种类型的分类数据,如商品分类、学科分类等。
算法实现步骤
- 准备原始数据
数据格式需要满足以下要求:
- 每一条数据至少包含一个唯一标识符和一个分类名称;
- 如果数据有层级关系,需要在每一条数据中包含一个字段来表示该条数据所属的父级分类的唯一标识符。
示例数据如下:
[
{"id": 1, "name": "电视", "parent_id": 0},
{"id": 2, "name": "冰箱", "parent_id": 0},
{"id": 3, "name": "海尔", "parent_id": 2},
{"id": 4, "name": "西门子", "parent_id": 2},
{"id": 5, "name": "小明", "parent_id": 3},
{"id": 6, "name": "小红", "parent_id": 3},
{"id": 7, "name": "小丽", "parent_id": 4},
{"id": 8, "name": "小刚", "parent_id": 4}
]
- 实现递归函数
该算法是通过递归函数实现的,需要实现一个函数,该函数接收两个参数:原始数据列表和当前父级分类的唯一标识符。该函数的作用是返回当前父级分类的所有子级分类,以及子级分类的子级分类。
- 实现子级分类获取函数
在递归函数中,需要实现一个子级分类获取函数,该函数接收两个参数:原始数据列表和当前父级分类的唯一标识符。该函数的作用是返回当前父级分类的所有子级分类。
- 实现递归输出函数
在递归函数中,需要实现一个递归输出函数,该函数接收三个参数:原始数据列表、当前父级分类的唯一标识符和当前输出的缩进量。该函数的作用是递归输出当前父级分类的子级分类,并添加适当的缩进。
示例说明
以商品分类为例,假设有以下数据:
[
{"id": 1, "name": "电视", "parent_id": 0},
{"id": 2, "name": "冰箱", "parent_id": 0},
{"id": 3, "name": "海尔", "parent_id": 2},
{"id": 4, "name": "西门子", "parent_id": 2},
{"id": 5, "name": "小明", "parent_id": 3},
{"id": 6, "name": "小红", "parent_id": 3},
{"id": 7, "name": "小丽", "parent_id": 4},
{"id": 8, "name": "小刚", "parent_id": 4}
]
要生成该数据的树状结构,只需调用如下代码:
def recursive_tree(data, parent_id):
result = []
for item in get_children(data, parent_id):
item["children"] = recursive_tree(data, item["id"])
result.append(item)
return result
def get_children(data, parent_id):
return [item for item in data if item["parent_id"] == parent_id]
data = [
{"id": 1, "name": "电视", "parent_id": 0},
{"id": 2, "name": "冰箱", "parent_id": 0},
{"id": 3, "name": "海尔", "parent_id": 2},
{"id": 4, "name": "西门子", "parent_id": 2},
{"id": 5, "name": "小明", "parent_id": 3},
{"id": 6, "name": "小红", "parent_id": 3},
{"id": 7, "name": "小丽", "parent_id": 4},
{"id": 8, "name": "小刚", "parent_id": 4}
]
result = recursive_tree(data, 0)
print(result)
运行结果如下:
[
{
"id": 1,
"name": "电视",
"parent_id": 0,
"children": []
},
{
"id": 2,
"name": "冰箱",
"parent_id": 0,
"children": [
{
"id": 3,
"name": "海尔",
"parent_id": 2,
"children": [
{
"id": 5,
"name": "小明",
"parent_id": 3,
"children": []
},
{
"id": 6,
"name": "小红",
"parent_id": 3,
"children": []
}
]
},
{
"id": 4,
"name": "西门子",
"parent_id": 2,
"children": [
{
"id": 7,
"name": "小丽",
"parent_id": 4,
"children": []
},
{
"id": 8,
"name": "小刚",
"parent_id": 4,
"children": []
}
]
}
]
}
]
可以看到,该算法成功地将原始数据转换为了树状结构。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python 无限级分类树状结构生成算法的实现 - Python技术站