以家谱为例:
grandparents = ['Frank', 'Kelly']
parent = ['John']
kids = ['Emily', 'Mary', 'Sue']
我明白我能做到:
dot.node('F', 'Frank')
dot.node('K', 'Kelly')
dot.node('J', 'John')
dot.node('E', 'Emily')
...
dot.edges(['FJ','KJ','JE',...])
输出的预期结构应该相当明显:
F -> J
K -> J
J -> E
J -> M
J -> S
但是我手动执行此操作需要包含太多元素,而我无法弄清楚如何将此工作与for循环结合使用。
答案 0 :(得分:0)
在半伪代码中它看起来像(我假设你正在使用PyGraphviz或类似的东西。
for grandparent g
Graph.add_node(g.id, g.name)
for parent p
Graph.add_node(p.id, p.name)
Graph.add_edge(g.id, p.id)
for kid k
Graph.add_node(k.id, k.name)
Graph.add_edge(p.id, k.id)
然后使用父母和孩子做同样的事情。您需要为每个名称定义唯一标识符(例如,F表示Frank)。 For循环不能很好地回归到一个家庭。为此,您需要使用树结构和递归。