繁体   English   中英

python-如何按降序对值排序?

[英]How to sort by value in descending order an Ordered Dictionary in python?

我正在使用一个有序字典,其中包含所有值(n_estimators和来自OOB估计的错误率, 如此处所示)

我想首先在字典中获得错误率最低的值。

例如,在下面您可以看到222具有最高错误率。

OrderedDict([('RandomForest_AWA_Fp1, max_features=7', 
    [(220, 0.10833333333333328), 
     (221, 0.10833333333333328), 
     (222, 0.10952380952380958), 
     (223, 0.10833333333333328)])
])

我想按以下顺序对字典进行排序:220、221、223、222(按值降序排列)

我努力了:

OrderedDict(sorted(error_rate.items(), key=lambda t: min(t[0]))) 

但我看不出有什么区别。

我得到的错误:

 File "<ipython-input-85-0592e683c6a9>", line 3
    pp(dict(OrderedDict(sorted([(k, sorted(v, key=min)) for k, v in d.items()], key=lambda(k, v): min(v)))))
                                                                                      ^
SyntaxError: invalid syntax

您的字典是由一项组成的,所以我不确定您是否也想对它进行排序。 但是,您的链接问题似乎就是这种情况。

由于您提到222具有最高的错误值,因此我认为您还希望对列表中的值进行排序。

>>> from pprint import pprint as pp
>>> d = OrderedDict([('RandomForest_AWA_Fp1, max_features=7', [(220, 0.10833333333333328), (221, 0.10833333333333328), (222, 0.10952380952380958), (223, 0.10833333333333328)])])
>>> pp(OrderedDict(sorted([(k, sorted(v, key=min)) for k, v in d.items()], key=lambda(k, v): min(v))))
OrderedDict([('RandomForest_AWA_Fp1, max_features=7', [(220, 0.10833333333333328), (221, 0.10833333333333328), (223, 0.10833333333333328), (222, 0.10952380952380958)])]{'RandomForest_AWA_Fp1, max_features=7': [(220, 0.10833333333333328),
                                                  (221, 0.10833333333333328),
                                                  (223, 0.10833333333333328),
                                                  (222, 0.10952380952380958)]}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM