题目:
给出输入格式:parent_id:0相当于是留言,parent_id不为0的相当于是回复,相当于数据库中字段
[
{id:1,parent_id:0},
{id:2,parent_id:1},
{id:3,parent_id:0},
{id:4,parent_id:3},
{id:5,parent_id:1}
]
要求输出格式:以parent为主体,相当于一个留言带着多个回复,将这个数据格式传给前端
[
{id:1,children:[{id:2},{id:5}]},
{id:3,children:[{id:4}]}
]
#留言和回复,parent_id:0的都是留言
input_list = [
{id:1,parent_id:0},
{id:2,parent_id:1},
{id:3,parent_id:0},
{id:4,parent_id:3},
{id:5,parent_id:1}
]
def find_fathr(input_list):
home = {}
#放留言的容器
parent_list = []
for data in input_list: #在字典中用in运算,取出的是键
#如果身份是留言(parent_id = 0),将爹们都放到一个容器中,格式为[{id:1},{id:3}]
if data['parent_id'] == 0:
parent_list.append{{'id':data['id']}
#如果是回复(parent_id != 0),创建出一个家,将所有这个留言的回复都放到这个容器家中(以留言的id带队)
else:
p_id = data['parent_id']
#如果还没有P_id带队的字典,则新建出这个家,格式为{p_id:[]}
if p_id not in home:#判断的也是键
home[p_id] = []
#将属于这个留言(p_id)的回复都添加到这个家中,格式为{p_id:[{id1:data['id1']},{id2:data['id2']}}
home[p_id].append({'id':data['id']})
#如果已有p_id带队,则直接将回复添加进去
else:
home[p_id].append({'id':data['id']})
#如果留言有回复,将回复添加到留言的字典{id:1}中,格式变为最终的{id:1,children:[{id:2},{id:5}]}
for parent in parent_list:
if parent['id'] in home:
parent['children'] = home[parent[id]]
return parent_list