Python 使用其中一个列表的数据对字典中的列表进行排序

Python 使用其中一个列表的数据对字典中的列表进行排序,python,list,numpy,dictionary,Python,List,Numpy,Dictionary,我有一本字典,结构如下: dic = {'NODE':[5,4,3,1,2],'sh1':[300.5,40.345,9.0,325.2,3.65], 'sh2':[50.6,48.5,2.1,0.0,90.1254], 'sh3':[780.5,54.5,89.0,35.64,2.85]} 我想根据节点列表组织字典中的列表,因此字典如下所示: dic = {'NODE':[1,2,3,4,5],'sh1':[325.2,3.65,9.0,40.345,300.5], 'sh2':[0.0,9

我有一本字典,结构如下:

dic = {'NODE':[5,4,3,1,2],'sh1':[300.5,40.345,9.0,325.2,3.65], 'sh2':[50.6,48.5,2.1,0.0,90.1254], 'sh3':[780.5,54.5,89.0,35.64,2.85]}
我想根据节点列表组织字典中的列表,因此字典如下所示:

dic = {'NODE':[1,2,3,4,5],'sh1':[325.2,3.65,9.0,40.345,300.5], 'sh2':[0.0,90.1254,2.1,48.5,50.6], 'sh3':[35.64,2.85,89.0,54.5,780.5]}
可能有一个简单的解决方案,但我对python非常陌生,特别是这个字典概念


提前感谢您的帮助。

您可以使用
np.argsort
获取用于对所有列表进行排序的索引:

import numpy as np
dic = {'NODE':[5,4,3,1,2],'sh1':[300.5,40.345,9.0,325.2,3.65], 'sh2':[50.6,48.5,2.1,0.0,90.1254], 'sh3':[780.5,54.5,89.0,35.64,2.85]}

sort_indices = np.argsort(dic['NODE'])
sorted_dic = {}
for key in dic:
    sorted_dic[key] = np.asarray(dic[key])[sort_indices].tolist()
print(sorted_dic)
结果:

{'NODE': [1, 2, 3, 4, 5], 'sh1': [325.2, 3.65, 9.0, 40.345, 300.5], 'sh2': [0.0, 90.1254, 2.1, 48.5, 50.6], 'sh3': [35.64, 2.85, 89.0, 54.5, 780.5]}
dic={'NODE':[5,4,3,1,2],'sh1':[300.5,40.345,9.0325.2,3.65],'sh2':[50.6,48.5,2.1,0.0,90.1254],'sh3':[780.5,54.5,89.0,35.64,2.85]}
#dict['NODE']中新值应来自的当前位置,即[3,4,2,1,0]
from_positions=list(映射(lambda x:x[1],已排序((x,idx)用于idx,枚举(dic['NODE'])中的x)
对于键,dic.items()中的值:
新的_值=[从_位置中的从_位置的值[从_位置]
dic[键]=新的_值
打印(dic)
印刷品:

{'NODE': [1, 2, 3, 4, 5], 'sh1': [325.2, 3.65, 9.0, 40.345, 300.5], 'sh2': [0.0, 90.1254, 2.1, 48.5, 50.6], 'sh3': [35.64, 2.85, 89.0, 54.5, 780.5]}

这非常有效,谢谢!