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

Python 查找多个语句的依赖项/执行顺序,python,networkx,Python,Networkx,我有几句话像 # exhibit 1 a = 0 b = 0 c = d + a d = a + b 应该按照正确的顺序来执行 # exhibit 2 a = 0 b = 0 d = a + b # d before c c = d + a 有没有办法找到附件1中语句的正确执行顺序 我尝试将networkx与有向图和语句一起使用,如 tree.add_edge(a, b) tree.add_edge(b, d) tree.add_edge(d, c) tree.add_edge(a, c)

我有几句话像

# exhibit 1
a = 0
b = 0
c = d + a
d = a + b
应该按照正确的顺序来执行

# exhibit 2
a = 0
b = 0
d = a + b # d before c
c = d + a
有没有办法找到附件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条语句。

您要查找的东西叫做拓扑排序

还有一个简单的python库,名为
toposort

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

from toposort import toposort_flatten 
toposort_flatten({2: {11}, 
                  9: {11, 8, 10},                    
                  10:{11, 3},     
                  11:{7, 5}, 
                  8: {7, 3}})
给你一个有效的订单

[3, 5, 7, 8, 11, 2, 10, 9]

你可以用拓扑排序来解决这个问题。Python已经对此进行了测试

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必须为此提供一个库

$ tsort 
a d     
b d
a c
d c
a
b
d
c