res_list = [ {‘cat_id‘:1,‘name‘:‘北京‘,‘parent_id‘:0}, {‘cat_id‘:2,‘name‘:‘杭州‘,‘parent_id‘:0}, {‘cat_id‘:3,‘name‘:‘海淀区‘,‘parent_id‘:1}, {‘cat_id‘:4,‘name‘:‘海淀xx小区‘,‘parent_id‘:3}, {‘cat_id‘:6,‘name‘:‘西湖区‘,‘parent_id‘:2}, {‘cat_id‘:7,‘name‘:‘三墩‘,‘parent_id‘:6}, ]
# 创建列表,存放结果 res = []
def get_tree(data, level=0, parent_id=0, is_clear=True):
# 若每次重新调用该方法,则清空列表内上次存放的结果
if is_clear: res.clear() # 循环匹配 for item in data: if item.get(‘parent_id‘) == parent_id:
# 用于记录当前记录的层级 item[‘level‘] = level
# 将结果加入列表 res.append(item)
# 递归调用函数,继续执行,直到匹配完所有结果 get_tree(data, level=level+1, parent_id=item.get(‘cat_id‘), is_clear=False) return res get_tree(res_list)
# 打印查看效果 print(res) for r in res: print(‘-‘*r.get(‘level‘)+r.get(‘name‘))
原文:https://www.cnblogs.com/hellozizi/p/11816043.html