python - 获取字典中的索引,而不是键值
问题描述
我有一本这样的字典:
header= {'f1': 13, 'f2': 7, 'f3': 45};
如您所见,header['f2'] = 7
具有最小值,该项目是标题中的第二个(其索引为 1)。
我所做的?
我已经尝试使用此代码来获取标头中最小项目的索引(此处为 1),但它返回键值:
index = min(header)
输出:
f2
我想要的是?
我想获取字典中最小项目的索引,我该怎么做?
解决方案
字典没有索引
即使在 Python 3.6+(官方为 3.7+)中,字典是按插入顺序排列的,您也不能直接按位置提取键或值。对于collections.OrderedDict
. 另请参阅:在 Python 3.6+ 中按位置高效访问字典项。
min
+enumerate
假设 Python 3.6+,您可以通过迭代根据插入顺序 提取键/值的位置。在这种情况下,您可以使用min
自定义lambda
函数:
header = {'f1': 13, 'f2': 7, 'f3': 45}
min_idx, (min_key, min_val) = min(enumerate(header.items()), key=lambda x: x[1][1])
print((min_idx, min_key, min_val))
(1, 'f2', 7)
推荐阅读
- php - 来自数据库 php 的动态时隙预订检查
- django - 是否可以在 django 设置中将参数传递给 celery 任务?
- angular - 电容器/Ionic4:带 plugin_not_installed 的 BarcodeScanner
- python - 将具有内部条件的循环从 python 转换为 go lang
- angular - 获取angular5中的单选按钮值
- sql - 如何在SQL(Oracle)中将字符串转换为指定格式的十进制数
- .htaccess - htaccess 重定向将文本添加到 url
- java - JavaFX tableview 搜索过滤器不起作用,但没有错误?
- c# - 初始期间和最终期间必须包含一个日期,并且不能包含在其他日期中
- linqpad - 显示的消息“正在下载更新...”不会消失