2015-08-10 2 views
2

Я хотел бы выбрать и выполнить операции над узлами в графе с определенными атрибутами. Как выбрать узлы с заданным значением атрибута? Например:Выберите узлы сети с заданным значением атрибута

P=nx.Graph() 
P.add_node('node1',at=5) 
P.add_node('node2',at=5) 
P.add_node('node3',at=6) 

Есть ли способ, чтобы выбрать только те узлы, с в == 5 ?.

я себе что-то вроде (это не работает):

for p in P.nodes(): 
    P.node[p]['at'==5] 

ответ

3

Согласно documentation попробовать:

nodesAt5 = filter(lambda (n, d): d['at'] == 5, P.nodes(data=True)) 

или как ваш подход

nodesAt5 = [] 
for (p, d) in P.nodes(data=True): 
    if d['at'] == 5: 
     nodesAt5.append(p) 
+0

Спасибо, основанный на вашем ответе, я использовал это: '[x для x, y в P.nodes (data = True), если y ['at'] == 5]' – atomh33ls

+0

@ atomh33ls Отлично. Да, с пониманием списка это также возможно. Если вы будете использовать узлы лота, это может предпочесть «фильтр». Это должно быть «немного» быстрее. – wenzul