J'utilise NetworkX dans mes recherches, mais je voulais rechercher un nœud avec un attribut spécifique, et à la suite de la recherche d'une telle méthode, je l'ai fait.
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
Lançons le programme de test suivant.
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'))
Voici le résultat de l'exécution.
Résultat d'exécution
['a', 'e', 'c']
Vous pouvez voir qu'une liste composée de noms de nœuds avec «bleu» défini dans l'attribut «couleur» a été acquise.
C'est une solution très appropriée, donc elle a les trois arguments suivants.
--G: graphique à rechercher --attr: nom de l'attribut que vous souhaitez rechercher --value: la valeur de l'attr que vous voulez trouver
La valeur de retour est une liste de noms de nœuds trouvés.
Comme cela semble être très nécessaire, il peut en fait y avoir une méthode avec une fonction similaire à NetworkX. S'il vous plaît, faites-moi savoir.
De plus, je n'ai pas étudié correctement les règles de dénomination telles que les méthodes, donc je serais heureux si vous pouviez me dire s'il y a quelque chose comme "Je devrais lui donner un tel nom" ...
Recommended Posts