一道面试题:前端同学通过接口向后端传了天猫的行业信息

原题

假设前端同学通过接口向后端传了天猫的行业信息,例如:
industry_list = [
  {
     "parent_ind" : "女装",
     "name" : "连衣裙"
  },
  {
     "name": "女装"
  },
  {
     "parent_ind" : "女装",
     "name" : "半身裙"
  },
  {
     "parent_ind" : "女装",
     "name" : "A字裙"
  },
  {
     "name": "数码"
  },
  {
    "parent_ind" : "数码",
     "name": "电脑配件"
  },
  {
    "parent_ind" : "电脑配件",
     "name": "内存"
  },
]

为了取用方便,我们希望可以将其转换为树状格式,例如:
{
  "数码": {
    "电脑配件": {
        "内存" : {}
     }
  },
  "女装" : {
     "连衣裙": {},
    "半身裙": {},
    "A字裙": {}
  }
}
实现一个方法完成这个转换,时间复杂度请控制在O(n)
def convert_format(data):
       pass

自己乱写了个,大家有没有更好的

def convert_format(data):
    d2 = dict()
    d1 = dict()
    for i in data:
        parent = i.get('parent_ind')
        name = i.get('name')
        d3 = {name: {}}
        if not parent:
            d1[name] = d2.setdefault(name, {})
        else:
            d2.update(d3)
            d2.setdefault(parent, {}).update(d3)
    return d1

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值