字典中的最小值

时间:2018-07-23 12:19:04

标签: python

我的函数返回字典{1: 10.0, 2: 9.0, 3: 2.5}

所以我确实尝试了a = {1: 10.0, 2: 9.0, 3: 2.5}

for i in a.keys()
    prin min(i)

但是得到

TypeError: 'int' object is not iterable

有人可以解释一下我如何在此字典中获得最小的值吗?

4 个答案:

答案 0 :(得分:2)

其中之一应该做到

def min_value(d):
    return min(d.values())

def min_key(d):
    return min(d)

def key_of_min_value(d):
    return min(d.items(), key=lambda pair: pair[1])[0]

答案 1 :(得分:1)

您正在得到这个-

TypeError: 'int' object is not iterable

因为min期望可迭代。看看docs

但是for i in a.keys()给您int,您不能遍历int对象。传递类似-

的列表
min(a) or min(a.values()) # depending on your requirement

答案 2 :(得分:1)

当然,您正在尝试获取整数的最小值。

实际上,您正在执行代码:

for 1 in a:
    print min(1)

您必须在min函数(带有可迭代参数)中插入字典而不是其值

因此您可以这样做:

>>> a = {1: 10.0, 2: 9.0, 3: 2.5}
>>> min(a)
1

但是实际上您传递了key参数。

如果要使用dict值的min值,则应该执行以下操作:

>>> a = {1: 10.0, 2: 9.0, 3: 2.5}
>>> min(a.values())
2.5

答案 3 :(得分:1)

如果您希望键的最小值,min将使用key函数进行比较。您可以传递一个lambda来比较值而不是键:

key_for_minimum_value = min(key for key, value in a.items(),
                            key=lambda (key, value): value)

或者,更简洁一些,而是使用字典查找(效率可能略低):

key_for_minimum_value = min(a, key=a.get)