我有2个文件。第一个文件具有边和权重,并具有以下格式:
1 3 1
2 4 1
2 5 1 etc
并且第二个文件具有节点id和节点的属性:
1 attr1,attr2,attr3
2 attr2,attr4
使用第一个文件,我使用以下代码创建有向图:
G = nx.read_edgelist('myGraph.txt', create_using=nx.DiGraph(), delimiter='\t', nodetype=int, data=(('sign', int),))
然后我使用第二个文件来读取每一行。我读了第一个令牌(节点ID),我检查这个节点是否属于我的图节点,然后我再次使用split函数删除逗号。现在我想将属性保存到节点。我使用以下代码,但属性保持空白。这是我的代码:
for line in file2:
words = line.split()
node = words[0]
attributes = words[1]
splittedAttributes = attributes.split(',')
G.node[node]['Attributes'] = splittedAttributes
答案 0 :(得分:2)
您的代码中有一点错误:
G = nx.read_edgelist('myGraph.txt', create_using=nx.DiGraph(), delimiter='\t', nodetype=int, data=(('sign', int),))
nodetype=int
您正在将节点加载为int
。由于line
是str
,因此node
也是str
。如果您想使用ints
,请执行以下操作:
node = int(words[0])
这应该可以解决问题。请记住以G.node[node]['Attributes']
而非G[node]['Attributes']
的形式访问属性,因为这会输出应该引发错误的节点node
和Attributes
的权重。