如果我有一个Python字典,我如何获得包含最小值的条目的键?
我在想一些与min()函数有关的事情…
给定输入:
{320:1, 321:0, 322:3}
它会返回321。
如果我有一个Python字典,我如何获得包含最小值的条目的键?
我在想一些与min()函数有关的事情…
给定输入:
{320:1, 321:0, 322:3}
它会返回321。
当前回答
如果你不确定你没有多个最小值,我建议:
d = {320:1, 321:0, 322:3, 323:0}
print ', '.join(str(key) for min_value in (min(d.values()),) for key in d if d[key]==min_value)
"""Output:
321, 323
"""
其他回答
# python
d={320:1, 321:0, 322:3}
reduce(lambda x,y: x if d[x]<=d[y] else y, d.iterkeys())
321
要创建一个可排序的类,必须重写六个特殊函数,以便由min()函数调用。
这些方法是__lt__, __le__, __gt__, __ge__, __eq__, __ne__,它们的顺序是小于,小于或等于,大于,大于或等于,等于,不等于。
例如,你应该像下面这样实现__lt__:
def __lt__(self, other):
return self.comparable_value < other.comparable_value
然后可以使用min函数,如下所示:
minValue = min(yourList, key=(lambda k: yourList[k]))
这对我很管用。
对于你有多个最小键并且想要保持简单的情况
def minimums(some_dict):
positions = [] # output variable
min_value = float("inf")
for k, v in some_dict.items():
if v == min_value:
positions.append(k)
if v < min_value:
min_value = v
positions = [] # output variable
positions.append(k)
return positions
minimums({'a':1, 'b':2, 'c':-1, 'd':0, 'e':-1})
['e', 'c']
将min与迭代器一起使用(对于python 3使用items而不是iteritems);使用itemgetter from操作符代替lambda,这比lambda快。
from operator import itemgetter
min_key, _ = min(d.iteritems(), key=itemgetter(1))
Min (d.s items(), key=lambda x: x[1])[0]