Ich verwende NetworkX in meiner Forschung, wollte aber nach einem Knoten mit einem bestimmten Attribut suchen, und als Ergebnis der Suche nach einer solchen Methode habe ich es geschafft.
find_specific_attribute_node.py
import networkx as nx
def find_specific_attribute_node(G, attr, value):
result = []
d = nx.get_node_attributes(G, attr)
for key, v in d.items():
if(v == value):
result.append(key)
return result
Lassen Sie uns das folgende Testprogramm ausführen.
find_node_test_for_qiita.py
import networkx as nx
from find_specific_attribute_node import find_specific_attribute_node as find_nodes
if __name__ == '__main__':
Graph = nx.DiGraph()
Graph.add_node('a', color = 'blue')
Graph.add_node('b', color = 'red')
Graph.add_node('c', color = 'blue')
Graph.add_node('d', color = 'red')
Graph.add_node('e', color = 'blue')
Graph.add_node('f', color = 'red')
print(find_nodes(Graph, 'color', 'blue'))
Unten ist das Ausführungsergebnis.
Ausführungsergebnis
['a', 'e', 'c']
Sie können sehen, dass eine Liste mit Knotennamen mit "blau" im Attribut "Farbe" erstellt wurde.
Es ist sehr gut geeignet, daher hat es die folgenden drei Argumente.
--G: Zu durchsuchender Graph --attr: Attributname, nach dem Sie suchen möchten --value: Der Wert des Attr, den Sie suchen möchten
Der Rückgabewert ist eine Liste der gefundenen Knotennamen.
Es scheint sehr anspruchsvoll zu sein, daher kann es in der Realität eine Methode mit einer ähnlichen Funktion wie NetworkX geben. Lass es mich wissen, bitte.
Außerdem habe ich die Namensregeln wie Methoden nicht richtig studiert, daher würde ich mich freuen, wenn Sie mir sagen könnten, ob es so etwas wie "Ich sollte ihm einen solchen Namen geben" gibt ...
Recommended Posts