Python-删除字典对的比例/百分比

标签 python list dictionary nodes percentage

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

相关文章:

python - C++ (STL map) 等效于 Python 的 setdefault 的方法

python - 如何根据项目的第一个字符对可迭代对象中的项目进行分组?

python - 在多维数组中查找连续值 - python

Python 异常 "as"关键字

list - 从嵌套列表中提取有序(根据值)集合,基于列表的最后一项,Java

python - Python 中字典列表的条件操作

java - 比较父列表结构中的嵌套列表以获取java中特定索引中的值

java - hashmap.containskey不能将文件的第一个单词与以后出现的其他单词识别为同一单词

python - 使用 Python 删除矩阵中的第 n 行或第 n 列

python - 将 python 字典写入 CSV 列 : keys to first column, 值到第二个