3 Stimmen

Wie erstelle ich ein angepasstes Objekt als Knoten für networkx und wie suche ich danach?

Ich möchte, dass jeder Knoten eine IP-Adresszeichenfolge sowie Breiten- und Längengradwerte hat. Wie bekomme ich außerdem einen Zeiger auf ein solches Objekt, wenn ich den von networkx erstellten Graphen durchsuche?

5voto

Michael J. Barber Punkte 23764

NetworkX basiert auf der Idee, dass Graphen wie Wörterbücher fungieren können. Sie benötigen kein benutzerdefiniertes Objekt, das als Knoten fungiert, da den Knoten beliebige Eigenschaften in ihre "Wörterbücher" hinzugefügt werden können.

Betrachten Sie die folgende interaktive Sitzung:

>>> import networkx as nx
>>> G = nx.Graph()
>>> G.add_node(1)
>>> G.node[1]['ipaddress'] = '8.8.8.8'
>>> G.node[1]['longitude'] = 37
>>> G.node[1]['latitude'] = 50
>>> G.node[1]
{'latitude': 50, 'ipaddress': '8.8.8.8', 'longitude': 37}
>>> G.node[1]['ipaddress']
'8.8.8.8'

Hier wird ein Graph mit einem einzelnen Knoten 1 erstellt, dem ipaddress, longitude und latitude zugeordnet sind. Sie greifen über die Abfrage des Knotens direkt auf diesen in konstanter Zeit zu und erhalten dessen Eigenschaften auf ähnliche Weise.

Um auf spezifische Knoten zu verweisen, haben Sie verschiedene Möglichkeiten. Sie könnten z.B. ein Wörterbuch verwenden, um eine Liste oder Menge von Knoten für gewünschte Eigenschaften zu speichern. Die zweite Möglichkeit - die nur für eine einzige Eigenschaft, die jedem Knoten eindeutig zugeordnet ist, nützlich ist - ist die Verwendung der Eigenschaft als direkter Knoten. Z. B. für IP-Adressen:

>>> H = nx.Graph()
>>> H.add_node('8.8.8.8', longitude=37, latitude=50)
>>> H.node['8.8.8.8']
{'latitude': 50, 'longitude': 37}

Hier habe ich auch von einer von NetworkX bereitgestellten Bequemlichkeit Gebrauch gemacht, um die Eigenschaften bei der Erstellung des Knotens anzugeben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X