我是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)]