Python基础 求字典的最大Value值对应的Key值

max(iterable, *[, key, default])  //可传入迭代对象,求其最大值, key 按照指定的函数比较
max(arg1, arg2, *args[, key])  //可传入多个参数取最大值

刚入门python,不时的会投入 C 的思维,先用max(dict.values()) 求出value的最值,再遍历一遍dict ,判断dict[key] 是否等于 value。这一点也不pythonic

一、max的key自定义

dic = {'a': 3, 'b': 2, 'c': 5, 'd': 8}
ans = max(dic, key=lambda x: dic[x])
//ans = max(dic, key=dic.get)   2、利用dic.get方法
print(ans)
// ans = 'd'

max 的第一个参数是迭代对象,而 dict 默认迭代Key, 匿名函数冒号后面是返回值,按照返回值的内容进行比较,而最后的max返回的对象是key值。而这也就是 max函数 key 的自定义功能。

二、 如果有多个 Key 都取到了 Value 的最大值,会返回哪个 Key?

dic = {'a': 2, 'b': 8, 'c': 5, 'd': 8}
ans = max(dic, key=lambda x: dic[x])
print(ans)
//ans = 'b'

实践证明返回第一个出现的。

三、 字典按key、value排序

  • 按Key排序:
sdic = sorted(dic.item(), key=lambda it: it[0], reverse=True/False)
  • 按Value排序:
sdic = sorted(dic.item(), key=lambda it: it[1], reverse=True/False)

参考:
链接1

  • 11
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值