我的函数返回字典{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
有人可以解释一下我如何在此字典中获得最小的值吗?
答案 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)