2016-09-06 4 views
1

Ich habe networkx für ein bisschen verwendet, und es ist wirklich nett, wie ich Graph-Objekte direkt aus Wörterbüchern erstellen kann: einfach nx.Graph(my_dictionary). Jetzt versuche ich, Graph-Tool zu verwenden, und ich merke, dass ich nicht dasselbe machen kann.Erstellen Graph-Tool Graph aus dem Wörterbuch

Während des Googelns stieß ich auf this blog post, die zeigt, wie man ein graph-tool Graph aus einem networkx Graph erstellt. Der Prozess ist jedoch ziemlich beteiligt, und ich möchte nicht auf eine selbst gebraute Funktion und Netzwerkx abhängen, wann immer ich Grafik-Tool verwenden.

Ich denke, es wäre genauso einfach, eine Funktion zu schreiben, die durch mein Wörterbuch iteriert. Aber bevor ich damit angefangen habe, wollte ich sicherstellen, dass noch niemand einen Dict-to-Graph-Tool-Parser geschrieben hat. Es scheint wie eine offensichtliche Sache zu tun, aber ich kann absolut nichts in der Grafik-Tool-Dokumentation finden ....

+0

Was enthält Ihr Wörterbuch? – Peaceful

+0

Jeder Eckpunkt, aus dem die Kanten stammen, ist ein Schlüssel, und der entsprechende Wert ist eine Liste der Eckpunkte, auf die die Kanten zeigen. Es scheint ein ziemlich offensichtliches Format zu sein, da networkx es von Anfang an unterstützt. – TheChymera

+0

Ich habe jetzt eine Antwort hinzugefügt. – Peaceful

Antwort

2

Das sieht ziemlich einfach aus. Unter der Annahme, dass das Wörterbuch eine adjacency list des Graphen stellt (das ist das, was Sie in der Kommentar sagte), es kann getan werden, wie folgt:

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

Sie Kantenliste aus ihm heraus erstellen und fügen Sie ihn in ein leeres Diagramm :

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> 

Was ist das, was Sie wollten.

Verwandte Themen