Следующий код находит сообщества для данного графа '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. Я должен вручную прочитать количество определенных сообществ, а также вручную повторить и отредактировать код для каждого числа.Как я могу применить функцию, которая автоматически повторяет этот код, чтобы вместо «0» я мог иметь «n»?