2016-04-12 4 views
0

Ich verwende NetworkX ein Diagramm und stieß das folgende Problem zu implementieren: Zunächst habe ich eine Menge von Kanten (noch nicht erstellt worden ist), ohne Gewichte und die entsprechenden Gewichte von anderen Daten berechnet:Wie weisen Sie den vorhandenen Kanten (in Networkx) Stapel mit verschiedenen Gewichten zu?

import networkx as nx 
G = nx.Graph() 
edges = [(1,3), (1,4), (3,4), (3,2), (2,5)] 
weights = [2.5, 3.5, 2, 5, 4.5] 

I wünschen Kanten und Gewichte in den folgenden Stil

edges_with_weights = [(1,3,2.5), (1,4,3.5), (3,4,2), (3,2,5), (2,5,4.5)] 

zu gewichtete Kanten erstellen kombinieren, indem Sie

G.add_weighted_edges_from (edges_with_weights) 

Ich schrieb den folgenden Code, aber es berichtet: „Typeerror: kann nur Tupel verketten (nicht‚int‘) Tuple“

edges_with_weights = [x + y for x, y in zip (edges,weights)] #TypeError 

Also wie soll ich es ändern den gewünschten Stil zu bekommen? Danke Jungs!

Antwort

1

Sie können nur zwei Tupel verketten, also müssen auch die Elemente der zweiten Liste Tupel sein. Sie können dies in Ihr Listenverständnis aufnehmen:

>> [x + (y,) for x, y in zip (edges,weights)] 
[(1, 3, 2.5), (1, 4, 3.5), (3, 4, 2), (3, 2, 5), (2, 5, 4.5)] 
+0

Das funktioniert. Ich danke dir sehr!! – Hendrik

Verwandte Themen