【发布时间】:2014-05-09 22:53:20
【问题描述】:
我正在使用一个大字典(500 多个键),它的值是 2 个字典(它们的值是数字)和两个列表(一个长度 =~10 的数字,一个长度 =~ 的布尔值) 50)。我想获得某种表示形式,无论是列表还是元组,都可以通过一个内部字典中的一个数值对原始字典进行排序。有没有办法做到这一点?
作为参考,这是我正在使用的(大)字典中键“WHR”的单个条目:
dd_rf['WHR'] = {'counts': {'num': 81.0,
'numClassCorrect': 64,
'numClassDown': 20,
'numClassDownCorrect': 20,
'numClassIncorrect': 17.0,
'numClassUp': 61,
'numClassUpCorrect': 44,
'numDown': 37,
'numUp': 44},
'imp': array([ 0.50924113, 0.06348138, 0.07851569, 0.03005051, 0.04103215,
0.05646218, 0.03682958, 0.03642228, 0.04282599, 0.01439416,
0.03090185, 0.0598431 ]),
'rates': {'correctDownRate': 1.0,
'correctRate': 0.7901234567901234,
'correctUpRate': 0.7213114754098361,
'downRate': 0.4567901234567901,
'upRate': 0.5432098765432098},
'results': array([False, False, True, True, True, True, False, False, True,
False, True, True, False, False, True, False, True, True,
True, True, True, True, True, True, True, False, False,
True, True, True, True, True, True, True, True, True,
True, False, True, False, False, True, True, True, True,
True, True, True, True, False, True, False, True, True,
True, True, True, False, False, False, True, True, True,
True, True, True, True, True, True, True, False, True,
True, True, False, True, True, True, True, True, True], dtype=bool)}
因此,在我的工作中,我想按 'dd_rf[key]['rates']['correctRate'] 的值按降序对整个字典 'dd_rf' 进行排序。上例中与给定排序条件对应的值是 'correctRate': 0.7901234567901234。
谢谢!如果我可以提供更多背景信息,请告诉我。
【问题讨论】:
-
将
sorted与自定义key函数一起使用。 -
dict 未排序,因此您需要有序类型(列表)的键,或使用 OrderedDict
标签: python sorting dictionary