我正在尝试构建一个工具,可以突出显示具有最高介数中心性的社交网络节点。我将所有网络节点的测量值计算到字典中,按顺序对字典进行排序,然后仅保留前 3 对。
我希望这个工具是可扩展的,所以我想保留前 10% 的对,而不是前 3 个对。我是 Python 的新手,一直无法找到如何做到这一点。请在下面找到我的代码,其中要删除的节点数由 [:3] 指定。
G = nx.Graph('data')
betweenness = dict(nx.betweenness_centrality(G))
import operator
betweenness_dict = dict(sorted(betweenness.items(), key=operator.itemgetter(1), reverse=True)[:3])
本质上,我希望 [:3] 变成 [:10%]。任何帮助将不胜感激。
最佳答案
您只需计算字典长度的 10% 即可。然后将其输入到列表切片语法中。给定一个字典d
:
from operator import itemgetter
n = int(len(d) * 0.10) # floor float result, as you must use an integer
res = dict(sorted(d.items(), key=itemgetter(1), reverse=True)[:n])
关于Python-删除字典对的比例/百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51002210/