was ich habe: ein Graph G importiert in NetworkX Whit Knoten und egdes von GML-Datei geladen.
Problem: i für eine bestimmte Kante E meiner Graph ein neues Attribut ‚Typ‘ hinzufügen möchten: Wie ein neues Attribut zu einer ausgewählten Kante E.
Was ich tun möchte hinzufügen. Achtung: Das Attribut ‚Typ‘ existiert nicht für diese Kante E.hinzufügen neues Attribut zu einer Kante in NetworkX
Ich las viel von Lösungen im Internet vorgeschlagen und hier, aber keiner dieser Lösungen löst mein Problem. In der Tat ist mein Code:
G.edge[id_source][id_target]['type']= value
Aber wenn ich alle Kanten von G drucken, jetzt habe ich n + 1 Kanten, alle alten Kanten von G, und eine neue Kante p = (id_source, id_target, {'Typ' = Wert}). Außerdem hat die alte Kante E (die eine, die ich modifizieren möchte) nicht das neue Attribut 'type'.
So habe meinen Code eine neue Kante hinzugefügt (das ich will nicht).
Ich mag die alten ein neues Attribut aktualisieren, hinzufügen, die nicht existiert.
Vielen Dank für Ihre Hilfe!
EDIT: GELÖST Dank Aric und ein paar Tricks, die ich mein Problem gelöst:
def add_attribute_to_edge(H,id_node_source,id_node_target,new_attr,value_attr):
keydict =H[id_node_source][id_node_target]
key=len(keydict)
for k in keydict:
if 'type' not in H.edge[id_source][id_target][k]:
H.add_edge(id_node_source,id_node_target,key=k, new_attr= value_attr)
Danke für Antwort. Aber in Multigraph-Beispiel, wenn Sie die Kante hinzufügen, fügen Sie auch die Attributfarbe hinzu. Ich muss ein neues Attribut hinzufügen, das nicht existiert, wenn ich die Kante erstellt habe. Zum Beispiel nach Zeile 3, wie kann ich der Kante 1-2 ein zweites Attribut hinzufügen? –
Sicher schreiben Sie einfach G.add_edge (1,2, andere = 'foo'). Sie möchten vielleicht nicht 'type' verwenden, da es in Python ein reserviertes Wort ist (obwohl es wahrscheinlich OK ist, so zu verwenden). – Aric
Aber ich versuchte G.add_edge (1,2, andere = 'foo'). Aber es fügt eine neue Kante um die erste Kante 1,2, Farbe: rot). Ich will das: (1,2, Farbe: rot, andere: foo). Wie kann ich dieses Ergebnis erhalten? –