{'19': 3, '18': 7}
如果我有一个如上所示的列表,如何找到最大值,然后打印键值对,如:
(['18'], 7)
答案 0 :(得分:3)
print max(data.iteritems(),key=lambda x:x[-1])
可能?我真的不确定是诚实的
答案 1 :(得分:2)
有更多Pythonic方法可以做这些事情,但我希望这能为您清楚地说明这些步骤。首先我们颠倒字典。找到最大值
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())
如果您想在一个声明中看到它:
out_tuple = ([dict([(value, key) for (key,value) in data.iteritems()])[max(data.values())]], max(data.values()))
答案 2 :(得分:2)
最直接的方法是迭代并找到它:
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
但标准库提供了更多" pythonic"如何获得相同的信息..
from functools import partial
from operator import itemgetter
print max(thedict.items(), key=partial(itemgetter, 1))
这假设您只想获得最大值出现的第一个键。如果您希望所有显示最大值的键都必须在两次传递中执行(一次找到最大值,一次找到所有键)。
max_val = max(thedict.values())
max_pair = (tuple(k for k in thedict if thedict[k] == max_val), max_val)