基于内部字典中的条件获取特定键-python

基于内部字典中的条件获取特定键-python,python,Python,我有记录字典: {0.001: {'num_iter': 8112, 'accuracy': 98.41827768014059}, 0.002: {'num_iter': 4255, 'accuracy': 98.41827768014059}, 0.003: {'num_iter': 2837, 'accuracy': 98.41827768014059}, 0.004: {'num_iter': 2128, 'accuracy': 98.41827768014059}, 0

我有
记录
字典:

{0.001: {'num_iter': 8112, 'accuracy': 98.41827768014059}, 
 0.002: {'num_iter': 4255, 'accuracy': 98.41827768014059}, 
 0.003: {'num_iter': 2837, 'accuracy': 98.41827768014059}, 
 0.004: {'num_iter': 2128, 'accuracy': 98.41827768014059}, 
 0.005: {'num_iter': 1702, 'accuracy': 98.41827768014059}, 
 0.006: {'num_iter': 1417, 'accuracy': 98.41827768014059}, 
 0.007: {'num_iter': 4, 'accuracy': 63.620386643233736}, 
 0.008: {'num_iter': 4, 'accuracy': 62.741652021089635}, 
 0.009: {'num_iter': 3, 'accuracy': 52.196836555360285}}

我只想得到最高的代码<代码>精度<代码>,如果有不止一个,那么考虑最低的<代码> NoMuthITE< /COD>。在这种情况下,它将是

0.006

有任何帮助吗?

您可以将
sorted()
与自定义
键=
参数一起使用:

d = {0.001: {'num_iter': 8112, 'accuracy': 98.41827768014059},
 0.002: {'num_iter': 4255, 'accuracy': 98.41827768014059},
 0.003: {'num_iter': 2837, 'accuracy': 98.41827768014059},
 0.004: {'num_iter': 2128, 'accuracy': 98.41827768014059},
 0.005: {'num_iter': 1702, 'accuracy': 98.41827768014059},
 0.006: {'num_iter': 1417, 'accuracy': 98.41827768014059},
 0.007: {'num_iter': 4, 'accuracy': 63.620386643233736},
 0.008: {'num_iter': 4, 'accuracy': 62.741652021089635},
 0.009: {'num_iter': 3, 'accuracy': 52.196836555360285}}

print(sorted(d.items(), key=lambda k: (-k[1]['accuracy'], k[1]['num_iter']))[0][0])
印刷品:

0.006

注意:如果您只需要一个值-使用
max()
函数-complexity O(n)而不是
sorted()的O(nlogn)
您可以将
sorted()
与自定义
键=
参数一起使用:

d = {0.001: {'num_iter': 8112, 'accuracy': 98.41827768014059},
 0.002: {'num_iter': 4255, 'accuracy': 98.41827768014059},
 0.003: {'num_iter': 2837, 'accuracy': 98.41827768014059},
 0.004: {'num_iter': 2128, 'accuracy': 98.41827768014059},
 0.005: {'num_iter': 1702, 'accuracy': 98.41827768014059},
 0.006: {'num_iter': 1417, 'accuracy': 98.41827768014059},
 0.007: {'num_iter': 4, 'accuracy': 63.620386643233736},
 0.008: {'num_iter': 4, 'accuracy': 62.741652021089635},
 0.009: {'num_iter': 3, 'accuracy': 52.196836555360285}}

print(sorted(d.items(), key=lambda k: (-k[1]['accuracy'], k[1]['num_iter']))[0][0])
印刷品:

0.006


注意:如果您只需要一个值-使用
max()
函数-复杂性O(n)而不是
sorted()的O(nlogn)

您可以使用以下关键参数:

输出

0.006

您可以使用以下关键参数:

输出

0.006

如果只需要单个最大元素,请使用
max
。它接受一个
参数,就像
排序
,但在O(n)时间而不是O(n log n)时间内运行,这意味着它更高效

最大值(d,key=lambda k:(d[k]['accurity'],-d[k]['num_iter'])) 0.006
在这里,按键通过一个
(精度,-num_iter)
的元组进行比较,这意味着它选择具有最大
精度的按键,使用最小
num_iter
作为一个平衡开关。

如果您只需要一个最大元素,请使用
max
。它接受一个
参数,就像
排序
,但在O(n)时间而不是O(n log n)时间内运行,这意味着它更高效

最大值(d,key=lambda k:(d[k]['accurity'],-d[k]['num_iter'])) 0.006

在这里,通过一个
(精度,-num_iter)
的元组来比较键,这意味着它选择具有最大
精度的键,使用最小
num_iter
作为平局开关。

k做什么?@alex067
-k[1]['accurity']
否定“准确度”值-我们按相反顺序排序-从最高准确度到最低准确度。这具有O(n*logn)的时间复杂度-k做什么?@alex067
-k[1][“准确度”]
否定“准确度”值-我们按相反顺序排序-从最高准确度到最低。这具有O的时间复杂度(n*logn)