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())) |