一次遍历获取多级嵌套菜单
一次遍历获取多级嵌套菜单
category_lists = [
{"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": "华为P系列", "parent_id": 3},
{"id": 6, "name": "生食", "parent_id": 1},
{"id": 7, "name": "熟食", "parent_id": 1},
{"id": 8, "name": "华为Mate系列", "parent_id": 3},
{"id": 10, "name": "办公", "parent_id": 0}
]
def getMenu(category_list: list, index: int) -> list:
"""
:param category_list: 菜单列表
:param index: 获取第index菜单级
:return:
"""
# 临时变量存储每级菜单
temp = {}
for i in range(len(category_list)-1, -1, -1):
if not temp.get(category_list[i]["parent_id"]):
category_list[i]["children"] = temp.get(category_list[i]["id"])
temp[category_list[i]["parent_id"]] = [category_list[i]]
else:
category_list[i]["children"] = temp.get(category_list[i]["id"])
temp[category_list[i]["parent_id"]].append(category_list[i])
# print(temp)
# print(res)
# res = temp.get(index)
return temp.get(index)
print(getMenu(category_lists, 0))
print(getMenu(category_lists, 1))
# [{'id': 10, 'name': '办公', 'parent_id': 0, 'children': None}, {'id': 2, 'name': '手机', 'parent_id': 0, 'children': [{'id': 4, 'name': '小米', 'parent_id': 2, 'children': None}, {'id': 3, 'name': '华为', 'parent_id': 2, 'children': [{'id': 8, 'name': '华为Mate系列', 'parent_id': 3, 'children': None}, {'id': 5, 'name': '华为P系列', 'parent_id': 3, 'children': None}]}]}, {'id': 1, 'name': '食品', 'parent_id': 0, 'children': [{'id': 7, 'name': '熟食', 'parent_id': 1, 'children': None}, {'id': 6, 'name': '生食', 'parent_id': 1, 'children': None}]}]
# [{'id': 7, 'name': '熟食', 'parent_id': 1, 'children': None}, {'id': 6, 'name': '生食', 'parent_id': 1, 'children': None}]
此时此刻,非我莫属
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)