Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 对字典进行排序,然后通过排序替换值_Python_List_Dictionary - Fatal编程技术网

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