def findchildren(mangd,parent):
children=set()
lparent=list(parent)
mangd.remove(parent)
for word in mangd:
letters=list(word)
count=0
i=0
for a in letters:
if a==lparent[i]:
count+=1
i+=1
else:
i+=1
if count==2:
if word not in children:
children.add(word)
if i>2:
break
return children
上面的代码,用于查找子节点,目前工作正常,但是当我将其用于其他方法(实现广度优先搜索)时,所有操作都需要太长时间,因此,我想收集包含子节点列表的字典中的所有子节点。现在感觉这个任务超出了我的能力范围,但这个可行吗?我尝试创建了如下内容:
def findchildren2(mangd):
children=[]
for word in mangd:
lparent=list(word)
mangd.remove(word)
letters=list(word)
count=0
i=0
for a in letters:
if a==lparent[i]:
count+=1
i+=1
else:
i+=1
if count==2:
if word not in children:
children.append(word)
if i>2:
break
return children
我猜测我的上一次尝试只是垃圾,因为我收到了错误信息“在迭代过程中改变了集合的大小”。
def findchildren3(mangd,parent):
children=defaultdict(list)
lparent=list(parent)
mangd.remove(parent)
for word in mangd:
letters=list(word)
count=0
i=0
for a in letters:
if a==lparent[i]:
count+=1
i+=1
else:
i+=1
if count==2:
children[0].append(word)
if i>2:
break
return children