如何在字典中返回最小值?

Ale*_*lis 6 python dictionary

假设我有一份水果总词典:

Fruits = {"apple":8, "banana":3, "lemon":5, "pineapple":2,}
Run Code Online (Sandbox Code Playgroud)

我想要输出

["pineapple"]
Run Code Online (Sandbox Code Playgroud)

因为菠萝价值最低.或者,如果我有这个:

Colour = {"blue":5, "green":2, "purple":6, "red":2}
Run Code Online (Sandbox Code Playgroud)

输出将是:

["green","red"]
Run Code Online (Sandbox Code Playgroud)

因为绿色和红色都具有最小的价值.

那么如何在字典中返回最小值?

Jon*_*nts 14

可以做到两遍:

>>> colour
{'blue': 5, 'purple': 6, 'green': 2, 'red': 2}
>>> min_val = min(colour.itervalues())
>>> [k for k, v in colour.iteritems() if v == min_val]
['green', 'red']
Run Code Online (Sandbox Code Playgroud)
  1. 找到字典值的最小值
  2. 然后回过头来提取那个价值的钥匙......

一个替代方案(需要一些导入,并且意味着你可以在需要时使用n个) - 这个代码只需要第一个(这将是最小值):

from itertools import groupby
from operator import itemgetter

ordered = sorted(colour.iteritems(), key=itemgetter(1))
bykey = groupby(ordered, key=itemgetter(1))
print map(itemgetter(0), next(bykey)[1])
# ['green', 'red']
Run Code Online (Sandbox Code Playgroud)