Я новичок в Python и, вычисляя центральности (в данном случае центральность katz) узлов в моей сети, я получил верхние узлы с наивысшей центральностью, но я не знаю, как получить имя узла (int) иззаданная пара (узел, значение)?
Я пробовал это:
list(reversed(sorted((value, node)for (node, value) in centrality.items())))[0][1]
Но это только дает мне имя верхнего 1 узла, а не верхних k узлов.
import networkx as nx
import math
G = nx.read_gml("dataset.gml", label='id')
phi = (1+math.sqrt(5))/2.0 # largest eigenvalue of adj matrix
centrality = nx.katz_centrality_numpy(G,1/phi-0.01)
import operator
budget=5
k=sorted(centrality.items(),key=operator.itemgetter(1), reverse=True)[0:budget]
print(k)
[(32, 0,43505798508638444), (9, 0,33579188967615126), (29, 0,2710852009834701), (3, 0,25130944720377396), (1, 0,24699259560662057)]