以下代码为给定的图 'G' 查找社区,并根据它们所属的社区将节点分配值从0到n。然后,该代码为每个社区创建新的子图,并在其中找到具有最高度数的节点。最后,每个子图中的顶级节点被整合到一个总字典中:
G = 'max : john', 'max : tom', 'jim : john'....'jack : james'
node_partition = dict(community_louvain.best_partition(G))
print node_partition = max: 1, john: 0, james: 3, jim: 4,...tom: 0
"""number of communities = n = list(set(node_partition.values()))"""
dict0 = {k: v for k, v in node_partition.items() if v !=[0]}
G0 = G.copy()
G0.remove_nodes_from(dict0)
degree0 = dict(G.degree(G0))
degree0_dict = dict(sorted(degree0.items(), key=operator.itemgetter(1), reverse=True)[:1])
star_dict = {**degree0_dict, **degree1_dict....**degreek_dict)
这种方法是可行的,但是一个图可以有n个社区,正如您所看到的代码仅适用于社区0中的节点。我必须手动读取确定社区的数量,并手动重复和编辑每个数字的代码。如何应用一个函数来自动重复这段代码,使得我可以有'n'而不是'0'?