首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python NetworkX -从嵌套字典中获取DiGraph

Python NetworkX -从嵌套字典中获取DiGraph
EN

Stack Overflow用户
提问于 2018-08-30 02:38:23
回答 1查看 885关注 0票数 1

我试图在python的NetworkX中通过嵌套字典创建一个简单的DiGraph,但是它看起来内置的初始化并没有构建最终的叶子节点。

玩具示例:

代码语言:javascript
复制
class_hierarchy= {-1: ["A", "B"], 
"A":{"A1":[1], "A2":[3,4]}, 
"B": {"B1":[5,6], "B2": [7,8]}}

构建图形:

代码语言:javascript
复制
G = DiGraph(class_hierarchy)

现在让我们看看我们在里面有什么:

代码语言:javascript
复制
G.nodes
Out[86]: NodeView((-1, 'A', 'B', 'A1', 'A2', 'B1', 'B2'))

看起来没有添加最后一个节点

检查它:

代码语言:javascript
复制
list(G.successors('A'))
Out[88]: ['A1', 'A2']

看起来很合理

但是:

代码语言:javascript
复制
list(G.successors('A1'))
Out[89]: []

我不确定为什么会出现这种情况? NetworkX的Documentation指定:

incoming_graph_data (输入图形(可选,默认:无))-初始化图形的数据。如果无(默认),则创建一个空图。数据可以是to_networkx_graph()函数支持的任何格式,当前包括edge list、dicts的dict、dict of lists等。

你知道我做错了什么吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-30 03:14:29

您有一个既是dict of lists又是dict of dicts的混合输入。Networkx会将其解释为dict of lists

请参见following code,其中data在您的示例中是class_hierarchy

代码语言:javascript
复制
if isinstance(data, dict):
        try:
            #this will raise an exception
            return from_dict_of_dicts(data, create_using=create_using,
                                  multigraph_input=multigraph_input)
        except:
            try:
                # this is what is called in your case
                return from_dict_of_lists(data, create_using=create_using)
            except:
                raise TypeError("Input is not known type.")

在您的例子中,networkx需要一个列表邻接表示的字典。

例如,预期输入的形式为:key: value -> node u: list of nodes [v1,v2,...,vn] u is connected with (例如,{0: 1,2,1: 3,4}。

networkx如何处理您提供的输入,如下所示:

代码语言:javascript
复制
G=nx.DiGraph()

edges_list = [((node, nbr)) for node, nbrlist in d.items() for nbr in nbrlist]
# [(-1, 'A'), (-1, 'B'), ('A', 'A1'), ('A', 'A2'), ('B', 'B1'), ('B', 'B2')]

G.add_edges_from(edges_list)

因此,您必须根据您赋予它的含义更改您的格式。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52084122

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档