【问题标题】:print highest value in dict with key [duplicate]用键打印dict中的最大值[重复]
【发布时间】: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 表达式
  • 重复值怎么办?你想要两个/所有的键吗?

标签: python python-2.7 dictionary


【解决方案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)

【讨论】:

    猜你喜欢
    • 2012-12-15
    • 2016-01-19
    • 2012-09-06
    • 2021-11-24
    • 1970-01-01
    • 2020-03-10
    • 1970-01-01
    • 2022-07-05
    • 1970-01-01
    相关资源
    最近更新 更多