Python 迭代networkx中的节点属性
我用networkx创建了一个图,每个节点都有一些属性。因此,我想在所有节点中搜索特定属性,并将具有该属性的每个节点保存在列表中。我编写了以下代码,但收到一个错误:Python 迭代networkx中的节点属性,python,python-3.x,networkx,Python,Python 3.x,Networkx,我用networkx创建了一个图,每个节点都有一些属性。因此,我想在所有节点中搜索特定属性,并将具有该属性的每个节点保存在列表中。我编写了以下代码,但收到一个错误: for node in G.nodes(): for attribute in G.node[node]['attributes']: if attribute in question: setOfUsers.append(node) 使用此代码,我得到以下错误: for attri
for node in G.nodes():
for attribute in G.node[node]['attributes']:
if attribute in question:
setOfUsers.append(node)
使用此代码,我得到以下错误:
for attribute in G.node[node]['attributes']:
KeyError: 'attributes'
因此,我搜索了论坛,并尝试了一些不同的方法来解决问题:
for node, data in G.nodes(data=True):
if data['attributes'] == question[0]:
setOfUsers.append(node)
但我也有同样的错误。如何遍历属性
更新:我用下面的代码添加节点属性。我从文件中读取属性,拆分逗号和换行符,然后将列表保存在节点中
for line in file2:
line = line.strip()
words = line.split('\t')
node = int(words[0])
attributes= words[1]
splittedAttributes = attributes.split(',')
if node in G.nodes():
G.node[node]['attributes'] = splittedAttributes
您确定以前已将信息添加到节点中吗?networkX似乎对您的“属性”一无所知。通过添加信息,我的意思是:
for node in G.nodes():
G.node[node]['attributes']= attributes[node]
然后您可以使用自己的代码来检查它们
for node in G.nodes():
for attribute in G.node[node]['attributes']:
if attribute in question:
setOfUsers.append(node)
您没有将
skills
属性添加到图表中。您确定任何节点都有属性吗?如果G.nodes()中的节点
从来都不是真的,那么在G.nodes()中的节点:G.node[node]['attributes']=splittedAttributes
行中,没有节点
将被分配一个'attributes'
属性。你能为我们打印G.nodes(data=true)
吗?@anutbu是的,我认为这就是问题所在。我有一些没有属性的节点。我怎样才能解决这个问题?添加一个空格作为属性是一个愚蠢的想法吗?需要将G.node[…][…]替换为G.nodes[…][…]以使其正常工作,否则效果很好。