如何不重构字典结构直接向Networkx DAG添加边?
解答
你的列表推导式运行异常是因为循环嵌套顺序写反了,列表推导式的循环顺序和常规for循环的书写顺序一致,外层循环在前、内层循环在后,正确的写法如下,无需修改原有字典结构:
# 直接生成符合要求的边列表传入方法即可 G.add_edges_from([(parent, child) for parent, children in dic.items() for child in children])
如果不想额外生成完整的边列表,也可以直接嵌套循环添加单条边,数据量较大时内存开销更小:
for parent, children in dic.items(): for child in children: G.add_edge(parent, child)
注意你示例中给出的边格式为(2,1),如果你的DAG需要父节点指向子节点的正向边,需要注意元组顺序为(父节点, 子节点),不要搞反边的方向。
内容的提问来源于stack exchange,提问作者JFerro
相关产品推荐
相关产品推荐

