这是一个井设计平面列表的工作代码,用于获取树:
data = [('john','marry'),('mike','john'),('mike','hellen')('john','elisa')]
roots = set()
mapping = {}
for parent,child in data:
childitem = mapping.get(child,None)
if childitem is None:
childitem = {}
mapping[child] = childitem
else:
roots.discard(child)
parentitem = mapping.get(parent,None)
if parentitem is None:
mapping[parent] = {child:childitem}
roots.add(parent)
else:
parentitem[child] = childitem
tree = {id : mapping[id] for id in roots}
print (tree)
不幸的是,我的单位列表有时是交换的,如下所示:
data = [('marry','john'),('john','mike'),('mike','hellen'),('john','elisa')]
那么,当一个已知的头部和一个孩子需要时,如何进行递归验证并交换“行”?