迭代networkx

时间:2018-02-10 14:36:41

标签: 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 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

1 个答案:

答案 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)