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)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM