我已经使用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]
答案 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)}