我使用networkx创建一个图表,每个节点都有一些属性。所以我想在所有节点中搜索特定属性,并将具有此属性的每个节点保存在列表中。我写了下面的代码,但我得到一个错误:
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
答案 0 :(得分:3)
您确定先前已将信息添加到节点吗?似乎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)