Python 字典中的最小值

Python 字典中的最小值,python,Python,我的函数返回一个dict{1:10.0,2:9.0,3:2.5} 所以我尝试了a={1:10.0,2:9.0,3:2.5} 但是 TypeError: 'int' object is not iterable 有人能解释一下,我怎样才能得到一个最小值吗?其中一个应该可以 def min_value(d): return min(d.values()) def min_key(d): return min(d) def key_of_min_value(d): ret

我的函数返回一个dict{1:10.0,2:9.0,3:2.5}

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

但是

TypeError: 'int' object is not iterable

有人能解释一下,我怎样才能得到一个最小值吗?

其中一个应该可以

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]
你明白了吗-

TypeError: 'int' object is not iterable
因为min期望一个iterable。看这张照片

但是对于a.keys中的i,它给了你int,你不能在int对象上迭代。像这样传递列表-

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

当然,您正在尝试获取int的最小值

事实上,在您的代码中,您正在执行:

for 1 in a:
    print min(1)
必须在接受iterable参数的min函数中插入字典,而不是其值

因此,您可以:

>>> a = {1: 10.0, 2: 9.0, 3: 2.5}
>>> min(a)
1
但事实上,你传递了关键参数

如果需要dict值的最小值,应执行以下操作:

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

如果您想要最小值的键,min将使用一个用于比较的键函数。您可以传递lambda,该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)

printmina.values?最小键还是最小值?参数是什么?停止思考代码在做什么。您正在对键进行迭代,因此我将有一个起始值,比如说,1。然后,你在做mini,它翻译成min1。你希望min1会回来什么?@PeterWood,对,编辑
key_for_minimum_value = min(a, key=a.get)