zoukankan      html  css  js  c++  java
  • 拼接层级数据进行数据递归,生成父子数据

    拼接层级数据进行数据递归,生成父子数据

    ll = ["a-(b-(c,d),e-f,d)","a-(e-d,b)","a-(g-h-i-j-(k-l-n,v),0-p-q)"]
    def system_relationship_data(data_list_sys):
        sys_list_one = data_list_sys.replace(",",'","').replace('(','",["').replace(')','"]')
        sys_list_two = ''.join(['["',sys_list_one,'"]'])
        print(sys_list_two,'xx')
        sys_list = sys_list_two.replace(']"',']')
        print('xxxxx',sys_list)
        return eval(sys_list)
    def sys_rela_data_list_ser(data_list):
        data_sys_list = []
        for var_list in data_list:
            data_sys_list.extend(sys_data_list_ser(system_relationship_data(var_list)))
        return list(set(data_sys_list))
    
    def sys_data_list_ser(sys_data):
        print('>>>',sys_data)
        sys_data_list = []
        for index,i in enumerate(sys_data):
            if isinstance(i,str):
                if i.endswith('-'):
                    sys_data_list.extend([f"{i}{ls}" for ls in sys_data_list_ser(sys_data[index + 1])])
                else:
                    sys_data_list.append(i)
        print('???>>>',sys_data_list)
        return sys_data_list
    def sys_data_list_set(sys_data_ser_list):
        sys_data_set = []
        print('???',sys_data_ser_list)
        for i in sys_data_ser_list:
            is_t = False
            if not sys_data_set:
                print('aaa',i)
                sys_data_set.append(i)
                continue
            for index,j in enumerate(sys_data_set):
                print('>>>',i)
                print('>>>',j)
                if i in j:
                    is_t=False
                    break
                if j in i :
                    sys_data_set[index] = i
                    is_t = False
                    break
                else:
                    is_t=True
            if is_t:
                sys_data_set.append(i)
        return sys_data_set
    
    def group_data(data):
        l = []
        for var in data:
            a = var.split('-')
            l.append(a)
        return l
    def group(data):
        li=[]
        for i in data:
            li.append(i[1:])
        return [{'name':data[0][0],'values':1,'children':gr(li,2)}]
    def gr(data_list,var):
        ll = []
        for ii in data_list:
            if  len(ii) == 1:
                ll.append({'name':ii[0],'values':var,'children':[]})
                continue
            if not ll:
                ll.append({'name':ii[0],'values':var,'children':[ii[1:],]})
                continue
            is_t = False
            for va in ll:
                if va['name'] ==ii[0]:
                    va['children'].append(ii[1:])
                    is_t = False
                    break
                else:
                    is_t = True
            if is_t:
                ll.append({"name":ii[0],'values':var,'children':[ii[1:],]})
        for dic in  ll:
            dic['children'] = gr(dic["children"],var+1)
        return ll
    xx = sys_rela_data_list_ser(ll)
    xxa=sys_data_list_set(xx)
    xxaa = group_data(xxa)
    xxaaa = group(xxaa)
    print(xx )
    print(xxa )
    print(xxaa )
    print(xxaaa )
    
  • 相关阅读:
    C# 自定义配置文件
    Mysql JSON字段提取某一个属性值的函数
    linux查看Java线程
    Idea书签管理器的使用
    springboot寻找property的顺序
    SpringBoot的spring-boot-starter有哪些(官方)
    SpringBoot打成jar包的配置方式
    netstat 常用参数总结
    Sentinel统计线程,QPS,RT的方式
    16. kubernetes RBAC
  • 原文地址:https://www.cnblogs.com/mqhpy/p/14703361.html
Copyright © 2011-2022 走看看