原结构
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)