Python 对字典进行排序,然后通过排序替换值
我有一个字典(表示图中所有节点的值),我想用字典中每个点的排名来代替它 看起来是这样的: 我的价值来自:Python 对字典进行排序,然后通过排序替换值,python,list,dictionary,Python,List,Dictionary,我有一个字典(表示图中所有节点的值),我想用字典中每个点的排名来代替它 看起来是这样的: 我的价值来自: A = nx.degree_centrality(G) 给予: A := {0: 0.0012082158679017317, 1: 0.002013693113169553, 2: 0.002013693113169553, 3: 0.0012082158679017317,... 我这样做: Abis = {k: v for k, v in sorted(A.items(), key
A = nx.degree_centrality(G)
给予:
A := {0: 0.0012082158679017317, 1: 0.002013693113169553, 2: 0.002013693113169553, 3: 0.0012082158679017317,...
我这样做:
Abis = {k: v for k, v in sorted(A.items(), key=lambda item: item[1], reverse=True)}
得到
Abis := {1244: 0.06766008860249698, 270: 0.031413612565445025, 1562: 0.029802658074909383,...
现在,我不知道如何创建ATIER,因此,我得到:
Atiers := {1244: 1, 270: 2, 1562: 3,...
我想从Abis创建一个新词典,这样我就可以按照这个标准获得排名
如果你有任何想法,你可以直接从A做这件事,我也会很高兴。我成功地思考了一个小时。您可以尝试列举:
Atiers = {k: i for i, (k,v) in enumerate(sorted(A.items(), key=lambda item: item[1], reverse=True), start = 1)}
你说的
rank
是指它在排序顺序中的位置吗?是的,我的意思是enumerate
有一个start
参数-你可以从1开始枚举。@wwii感谢你提供的信息。你可以用一个元组分别捕获键和值:{k:I代表I,(k,v)在enumerate(排序的(a.items(),key=lambda item:item[1],reverse=True),1)}
Atiers = {}
for (i, k) in enumerate(Abis.keys()):
Atiers[k] = i