zoukankan      html  css  js  c++  java
  • Python多层结构练习题

    原结构

    industry_list = [
      {
         "parent_ind" : "女装",
         "name" : "连衣裙"
      },
      {
         "name": "女装"
      },
      {
         "parent_ind" : "女装",
         "name" : "半身裙"
      },
      {
         "parent_ind" : "女装",
         "name" : "A字裙"
      },
      {
         "name": "数码"
      },
      {
        "parent_ind" : "数码",
         "name": "电脑配件"
      },
      {
        "parent_ind" : "电脑配件",
         "name": "内存"
      },
    ]
    

    为了取用方便,我们希望可以将其转换为树状格式,例如

    {
      "数码": {
        "电脑配件": {
            "内存" : {}
         }
      },
      "女装" : {
         "连衣裙": {},
        "半身裙": {},
        "A字裙": {}
      }
    }
    实现一个方法完成这个转换
    def convert_format(data)
    

    实现一个方法完成这个转换

    lst1 = []
    lst2 = []
    d = {}
    def convert_format(data):
    
        for dic in data:
            if not dic.get("parent_ind"):
                d[dic["name"]] = {}
            else:
                lst1.append(dic)
        for dic in lst1:
            if dic['parent_ind'] in d:
                d[dic.get('parent_ind')][dic['name']] = {}
            else:
                lst2.append(dic)
        for dic in lst2:
            for t in d.values():
                if dic['parent_ind'] in t:
                    t[dic['parent_ind']][dic['name']] = {}
        return d
    
    print(convert_format(industry_list))
    

    2. 递归简单实现

    dirs = {"C":"NULL",
            "D":{"D1":"NULL",
                 "D2":{"D2_1":"NULL"}},
            "E":{"E1":{"E1_1":{"E1_1_1":"NULL"},
                 "E1_2":"NULL"},
                 "E2":"NULL"}
            }
    def dirnames(dirs):
        """
        这个函数用于将上述定义的 dirs 中的每一个 key 和子元素中的 key
        取出并打印出来如:依次输出 C、D、D1、D2_1、D……	请补全代码。
        """
    
        # 第一种方法
        # for key,values in dirs.items():
        #     print(key)
        #     if type(values) == dict:
        #         dirnames(values)
    
        # 第二种方法
        for k, v in dirs.items():
            print(k)
            # isinstance(a,b) 判断a类是否是b类的子类或继承b类
            # issubclass(a,b) 判断a是否是b类或b类的子类的实例对象
            if isinstance(v, dict):
                dirnames(v)
    
    dirnames(dirs)
    
  • 相关阅读:
    fatfs输出目录
    《基于多光程长的高散射物质光学参数的测量及其应用》论文
    《2013李永乐线性代数强化班》视频1,2,3,4
    oled屏幕模块
    python中数据结构
    大数据python词频统计之hdfs分发-cacheFile
    8大排序之Python实现 冒泡排序优化
    大数据python词频统计之本地分发-file
    2019-04-30vmware虚拟机安装macos 10.8格式为iso
    2019-04-24Scurecrt 如何下载文本文件
  • 原文地址:https://www.cnblogs.com/lvweihe/p/12637727.html
Copyright © 2011-2022 走看看