2016-09-06 52 views
1

我一直在使用networkx,它真的很整洁,它让我直接从字典创建Graph对象:只需nx.Graph(my_dictionary)。 现在我正在尝试使用图形工具,并且我注意到我不能这么做。创建图形工具从字典中的图形

虽然使用Google搜索,但我遇到了this blog post,它显示了如何从networkx图创建图形工具图。但是,这个过程是非常复杂的,我不想在我使用图形工具的时候同时依靠家庭自酿功能 networkx。

我想这会很容易编写一个迭代通过我的字典的函数。 但是在我开始这么做之前,我想确保没有人写过一个dict-to-graph-tool解析器。 这似乎是一件显而易见的事情,但我在图形工具文档中找不到任何东西......

+0

你的字典包含什么? – Peaceful

+0

每个顶点从哪个边缘起始是一个关键,相应的值是边缘指向的顶点列表。这似乎是一个非常明显的格式,因为networkx支持开箱即用。 – TheChymera

+0

我已经添加了答案。 – Peaceful

回答

2

这看起来很简单。假设你的字典代表图的adjacency list(那是你的评论说),这是可以做到如下:

In [3]: d # This dictionary contains the adjacency list 
Out[3]: {0: [1, 2], 1: [3]} 

你可以在它外面创建边缘列表,并将其添加到空图:

In [4]: edges = [(i, j) for i in d for j in d[i]] 

In [6]: G = gt.Graph(directed = False) 

In [7]: G.add_edge_list(edges) 

In [8]: G 
Out[8]: <Graph object, undirected, with 4 vertices and 3 edges at 0x7fdbc8257780> 

这就是你想要的。