Python 迭代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

我用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

您确定以前已将信息添加到节点中吗?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[…][…]以使其正常工作,否则效果很好。