我正在使用一个包含所有值的有序字典(来自OOB估算的n_estimators和错误率as shown here。
我希望首先在字典中获得具有最低错误率的值。
例如,在下面您可以看到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
答案 0 :(得分:0)
你的词典是由一个项目组成的,所以我不确定你是否也要对它进行排序。但是,您的链接问题似乎就是这种情况。
由于您提到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)]}