如何在字典中获取索引,而不是键值

时间:2018-11-15 19:44:12

标签: python dictionary

我有一本这样的字典:

header= {'f1': 13, 'f2': 7, 'f3': 45};

如您所见,header['f2'] = 7具有最小值,该项目是标题中的第二个(索引为1)。

我做什么?

我尝试使用此代码获取标头中最小项目的索引(此处为1),但它返回键值:

index = min(header)
  

输出:

     
    

f2

  

我想要什么?

我想获取字典中最小项目的索引,我该怎么做?

3 个答案:

答案 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()))

这将返回字典中最小值的索引。