python代码的层次结构_Python:父子层次结构的组合

这篇文章深入讲解了如何使用Python递归算法解决图形问题中的路径查找,通过实例展示了如何在'测试.csv'文件中找到从'D'到'A'的所有路径。关键代码片段提供了理解路径遍历和深度优先搜索的实践指导。
摘要由CSDN通过智能技术生成

您是否看过this篇精彩的论文?真正了解python模式是必读的.您的问题可以认为是图形问题-找到关系基本上就是找到从子节点到父节点的所有路径.

由于可能存在任意数量的嵌套(child-> parent1-> parent2 …),因此您需要递归解决方案来查找所有路径.在您的代码中,您有2个for循环-如您所知,最多只会导致3级路径.

以下代码改编自上面的链接,以解决您的问题.函数find_all_paths需要一个图作为输入.

让我们从文件中创建图形:

graph = {} # Graph is a dictionary to hold our child-parent relationships.

with open('testing.csv','r') as f:

for row in f:

child, parent = row.split(',')

graph.setdefault(parent, []).append(child)

print graph

与您的样品一起,应打印:

{'C': ['A', 'B'], 'B': ['A'], 'D': ['B', 'C']}

以下代码直接来自本文:

def find_all_paths(graph, start, end, path=[]):

path = path + [start]

if start == end:

return [path]

if not graph.has_key(start):

return []

paths = []

for node in graph[start]:

if node not in path:

newpaths = find_all_paths(graph, node, end, path)

for newpath in newpaths:

paths.append(newpath)

return paths

for path in find_all_paths(graph, 'D', 'A'):

print '|'.join(path)

输出:

D|B|A

D|C|A

D|C|B|A

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值