题目:如给定如下列表:synonyms = ["(Jon,John)","(John,Johnny)","(Chris,Kris)","(Chris,Christopher)"]。现将有关联的名字整合在一起,即整合后的结果为:[(Jon,John,Johnny),(Chris,Kris,Christopher)]。
def find(pre_k, k, ks):
if not syn_dic[k]:
return
for w in syn_dic[k]:
if w and w not in ks and w not in syn_dic[pre_k]:
ks.append(k)
find(k, w, ks)
ks.pop()
if w in name_dic:
syn_dic[pre_k].append(w)
syn_dic[w] = None
syn_dic = {}
for s in synonyms:
s1, s2 = s.split(',')
name1 = s1[1:]
name2 = s2[:-1]
if name1 in name_dic or name2 in name_dic:
if name1 not in syn_dic:
syn_dic[name1] = [name2]
else:
syn_dic[name1].append(name2)
if name2 not in syn_dic:
syn_dic[name2] = [name1]
else:
syn_dic[name2].append(name1)
syn_dic[1] = []
for k in syn_dic:
syn_dic[1] = []
find(1, k, [])