查找字典的最大值并打印键、值对[重复]
Posted
技术标签:
【中文标题】查找字典的最大值并打印键、值对[重复]【英文标题】:Find max and print key, value pair of a dictionary [duplicate] 【发布时间】:2016-01-19 19:39:04 【问题描述】:'19': 3, '18': 7
如果我有一个类似上面的列表,我如何找到最大值,然后打印键、值对,如:
(['18'], 7)
【问题讨论】:
您之所以在列表中有'18'
,是因为您希望在多个键具有相同最大值的情况下查看多个键吗?
哦,我明白了,谢谢@zehnpaard 在字里行间的阅读方式...
【参考方案1】:
print max(data.iteritems(),key=lambda x:x[-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()))
【讨论】:
【参考方案3】:最直接的方法是迭代并找到它:
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)
【讨论】:
以上是关于查找字典的最大值并打印键、值对[重复]的主要内容,如果未能解决你的问题,请参考以下文章