使用networkX向节点添加属性

时间:2018-06-26 23:04:26

标签: python igraph networkx

我已经使用igraph计算了每个节点的最佳网络数量,这是我使用的代码。

import igraph
g = igraph.Graph.Read_Ncol('data.txt')
dendrogram = g.community_edge_betweenness()
clusters = dendrogram.as_clustering()
membership = clusters.membership

现在,我想在networkX中使用set_node_attributes函数以其社区数量标记每个节点。因此,如果我运行nx.get_node_attributes(g,'counts'),它将产生

{123: 2,
 124: 3,
 125: 4 and so on} where "123" is a node and "2" is the count associated 

我正在考虑在此处使用for循环,但不确定如何开始。

已编辑

membership
#output: 
[2,
 3,
 4]

1 个答案:

答案 0 :(得分:1)

我假设membership是一个字典,节点作为键,并作为值计数,然后根据您使用的networkx版本(我使用v2.1),检查{{1}的语法},对于version 2. 1,它是set_node_attributes, 所以你只是做

set_node_attributes(G, values, name=None)

然后使用nx.set_node_attributes(G, membership, 'counts') print G[123]['count'] #output 2 提取相同的字典like this

get_node_attributes

更新:假设attribute_dict = nx.get_node_attributes(G, 'counts') print attribute_dict[123] #output : 2 是计数列表,则其顺序与membership相同,因此我们可以

G.nodes()

然后做

node_list = list(G.nodes())

count_dict = { k:v for k,v in zip(node_list,membership)}