关于python:查找max和print key,字典的值对

Find max and print key, value pair of a dictionary

本问题已经有最佳答案,请猛点这里访问。
1
{'19': 3, '18': 7}

如果我有上面这样的列表,我如何找到最大值,然后打印键,值对如下:

1
(['18'], 7)


1
print max(data.iteritems(),key=lambda x:x[-1])

也许吧?我不太确定是否诚实


最简单的方法是迭代并找到它:

1
2
3
4
5
6
max_pair = None
for k,v in thedict.items():
   if (max_pair is None) or (v > max_pair[1]):
      max_pair = (k,v)

print max_pair

但是标准库提供了更多的"Python"方法来获取相同的信息。

1
2
3
from functools import partial
from operator import itemgetter
print max(thedict.items(), key=partial(itemgetter, 1))

这假设您只想获得出现max值的第一个键。如果您想要所有出现最大值的键,则必须在两次传递中进行(一次查找最大值,一次查找所有键)。

1
2
max_val = max(thedict.values())
max_pair = (tuple(k for k in thedict if thedict[k] == max_val), max_val)


有更多的Python式的方法来做这些事情,但我希望这能清楚地说明你的步骤。我们先把字典翻过来。找到最大值

1
2
3
4
5
data = {'19': 3, '18': 7}
data_rev = dict([(value, key) for (key,value) in data.iteritems()])
print data_rev

max_val = max(data_rev.keys())

如果希望在单个语句中看到它:

1
out_tuple = ([dict([(value, key) for (key,value) in data.iteritems()])[max(data.values())]], max(data.values()))