找爸爸数据结构(用途:可用于 留言及回复 的数据结构)

题目:

给出输入格式: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		
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值