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

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

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 )
posted @ 2021-04-26 09:58  MiaoQinHong  阅读(370)  评论(0编辑  收藏  举报