我有一本这样的字典:
header= {'f1': 13, 'f2': 7, 'f3': 45};
如您所见,header['f2'] = 7
具有最小值,该项目是标题中的第二个(索引为1)。
我做什么?
我尝试使用此代码获取标头中最小项目的索引(此处为1),但它返回键值:
index = min(header)
输出:
f2
我想要什么?
我想获取字典中最小项目的索引,我该怎么做?
答案 0 :(得分:1)
即使在字典为insertion ordered的Python 3.6+(官方3.7+)中,也无法直接按位置提取键或值。 collections.OrderedDict
也是如此。另请参阅:Accessing dictionary items by position in Python 3.6+ efficiently。
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)
答案 1 :(得分:0)
使用header.values()
返回仅包含字典值的列表:
>>> header= {'f1': 13, 'f2': 7, 'f3': 45}
>>> header.values()
[13, 7, 45]
>>> print(min(header.values()))
7
编辑:抱歉,您需要相应的密钥。这是一种实现方法,而不必包含任何其他特殊库:
print(header.keys()[header.values().index(min(header.values()))])
尽管字典在Python中没有排序,但是列表却是排序的,并且您从.keys()
和.values()
获得的列表彼此对齐。
答案 2 :(得分:-1)
list(header.values()).index(min(header.values()))
这将返回字典中最小值的索引。