基于内部字典中的条件获取特定键-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)