用键打印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】:您可以将max
和min
与dict.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中的最大值[重复]的主要内容,如果未能解决你的问题,请参考以下文章