拼接层级数据进行数据递归,生成父子数据
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 )