查找多个语句的依赖/执行顺序

2024-03-29 11:10:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我有几个陈述

# exhibit 1
a = 0
b = 0
c = d + a
d = a + b

应该按照正确的顺序来执行

^{pr2}$

有没有办法找到附件1中语句的正确执行顺序?在

我尝试使用networkx和有向图和语句

tree.add_edge(a, b)
tree.add_edge(b, d)
tree.add_edge(d, c)
tree.add_edge(a, c)

但我不知道如何穿越这棵树,所以必须得到图表2。在

我不局限于networkx。
做这项工作的任何工具对我来说都没问题。在

我真正的目标文件有大约200条语句。在


Tags: 文件工具networkxaddtree目标附件顺序
2条回答

你可以用拓扑排序来解决它。Python对此有a library。在

In [3]: from toposort import toposort_flatten

In [4]: toposort_flatten({'d': {'a', 'b'}, 'c': {'a','b'}})
Out[4]: ['a', 'b', 'c', 'd']

前面的答案:

在bash中,我们通常通过tsort(表示拓扑排序)来完成。Python必须有一个库。在

^{pr2}$

你要找的东西叫做拓扑排序http://en.wikipedia.org/wiki/Topological_sorting

还有一个简单的python库,名为toposorthttps://pypi.python.org/pypi/toposort/1.0

给定键形式的字典取决于您运行的值

from toposort import toposort_flatten 
toposort_flatten({2: {11}, 
                  9: {11, 8, 10},                    
                  10:{11, 3},     
                  11:{7, 5}, 
                  8: {7, 3}})

给你一个有效的命令

^{pr2}$

相关问题 更多 >