Я пытаюсь создать инструмент, который может выделять узлы социальных сетей с наивысшей центрированностью между центрами. Я вычисляю эту меру для всех сетевых узлов в словаре, сортирую этот словарь по порядку, а затем сохраняю только верхние 3 пары.
Я хочу, чтобы этот инструмент был масштабируемым, поэтому вместо трех верхних пар я хочу сказать, что верхние 10% пар. Я новичок в 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])