Python - 删除 proportion/percentage 字典对

Python - removing a proportion/percentage of dictionary pairs

我正在尝试构建一个工具,它可以突出显示具有最高介数中心性的社交网络节点。我将所有网络节点的这个度量计算到一个字典中,按顺序对这个字典进行排序,然后只保留前 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])