用键打印dict中的最大值[重复]

Posted

技术标签:

【中文标题】用键打印dict中的最大值[重复]【英文标题】:print highest value in dict with key [duplicate] 【发布时间】:2015-01-08 09:55:24 【问题描述】:

我的字典是这样的,

'A':4,'B':10,'C':0,'D':87

我想用它的键找到最大值,用它的键找到最小值。

输出会像,

最大:87,关键是 D

min : 0 , 键是 C

我知道如何从 dict 获取最小值和最大值。有什么方法可以在一个语句中获取值和键?

max([i for i in dic.values()]) 
min([i for i in dic.values()])

【问题讨论】:

使用 lambda 表达式 重复值怎么办?你想要两个/所有的键吗? 【参考方案1】:

只是:

 mydict = 'A':4,'B':10,'C':0,'D':87
 max(mydict.items(), key=lambda x: x[1])

【讨论】:

这不符合问题的规范。它应该找到具有最高值的键;不是最大的关键和最大的价值。【参考方案2】:

您可以将maxmindict.get 一起使用:

maximum = max(mydict, key=mydict.get)  # Just use 'min' instead of 'max' for minimum.
print(maximum, mydict[maximum])
# D 87

【讨论】:

我认为它不会起作用, @hackaholic 请解释原因,我很想知道。 如果 D 的值低于 A 和 C 怎么办 您也可以使用key, value = max(mydict.iteritems(), key = lambda p: p[1]),因为问题特别提到了将键和值放在一起。但是为了节省字典查找而输入更多代码很少值得。 确保你的值是数字而不是字符串,否则你会得到错误的答案。【参考方案3】:

线索是使用字典的项目(键值对元组)。然后通过使用项目的第二个元素作为max 键(与dict 键相反),您可以轻松提取最高值及其关联键。

 mydict = 'A':4,'B':10,'C':0,'D':87
>>> max(mydict.items(), key=lambda k: k[1])
('D', 87)
>>> min(mydict.items(), key=lambda k: k[1])
('C', 0)

【讨论】:

以上是关于用键打印dict中的最大值[重复]的主要内容,如果未能解决你的问题,请参考以下文章

通过最大值获取dict键[重复]

如何从java中的数组中打印多个最大值[重复]

为字典python中的每个键选择最大值

使用 group by 打印表中的最大值

查找字典的最大值并打印键、值对[重复]

如何打印除dict中的键之外的所有键的值[重复]