Python(28)使用max函数+lambda表达式求列表/字典的最大值

使用 max函数求列表的最大值

num = [10, 11, 12]
print(max(num, key=lambda i: i * i))   # 12

分析:

1) 先取10,以10为参传入匿名函数作为i,经i * i处理得1002) 再取11,以11为参传入匿名函数作为i,经i * i处理得1213) 最后取12,以12为参传入匿名函数作为i,经i * i处理得1444) 集中比较100,121,144,144最大,返回144对应的参数i,即125) 最后返回为12

使用 max函数求字典的最大值

原理:默认情况下,dict迭代的是key。如果想要迭代value,可以用for value in dic.values()
max函数:
第一个参数是可迭代内容,这里dic默认迭代key
第二个参数是一个函数,对迭代的每一项进行处理,将处理后的结果统一起来进行比较大小,返回大的一项的原数据

示例代码1

dic ={'k1':10, 'k2':200, 'k3':20}
ret = max(dic, key=lamda x : dic[x])
print(ret)

分析:

字典默认迭代键值

1) 先取k1,以k1为参传入匿名函数作为x,经dic[x]处理得102) 再取k2,以k2为参传入匿名函数作为x,经dic[x]处理得2003) 最后取k3,以k3为参传入匿名函数作为x,经dic[x]处理得204) 集中比较10,200,20200最大,返回200对应的参数x,即k2。
 
5) 最后返回为k2。

示例代码2

dic ={'k1':10, 'k2':200, 'k3':20}
ret = max(dic, key=lamda x : x)
print(ret)
字典默认迭代键值

1) 先取k1,以k1为参传入匿名函数作为x,经x处理得k1。

2) 再取k2,以k2为参传入匿名函数作为x,经x处理得k2。

3) 最后取k3,以k3为参传入匿名函数作为x,经x处理得k3。

4) 集中比较k1,k2,k3 得k3最大,返回k3对应的参数x,即k3。
 
5) 最后返回为k3。

示例代码3

lst = [
    {'name': 'egon', 'price': 100},
    {'name': 'rdw', 'price': 666},
    {'name': 'zat', 'price': 1}
]
ret = max(lst, key=lambda dic: dic['price'])  # 指定比较内容
print(ret)

分析:

1) 先取{'name': 'egon', 'price': 100},以{'name': 'egon', 'price': 100}为参传入匿名函数作为dic,经dic['price']处理得1002) 再取{'name': 'rdw', 'price': 666},以{'name': 'rdw', 'price': 666}为参传入匿名函数作为dic,经dic['price']处理得6663) 最后取{'name': 'zat', 'price': 1},以{'name': 'zat', 'price': 1}为参传入匿名函数作为dic,经dic['price']处理得1
 
4) 集中比较100,666,1666最大,返回666对应的参数dic,即{'name': 'rdw', 'price': 666}5) 最后返回{'name': 'rdw', 'price': 666}
   注意:因为返回是字典,所以可能乱序

总结与发现

不论匿名函数怎么处理参数,返回的不是处理后的结果,而是结果对应的参数本身。
下面这些图的红圈圈才是返回的东西
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

参考文档: python 使用 max函数求字典的最大值(lambda表达式)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值