Python中max函数key的用法详解

一、背景

起源于一个问题:怎样找到字符串中出现次数最多的字符

其实使用max函数就能很轻松的解决这个问题:

代码:


   
   
  1. str1 = "AAAaaa8888899sssss"
  2. print(max(str1, key=str1.count))

结果:8

二、原理

max()函数用于获得给定的可迭代对象中的最大值。

key是max()函数的一个参数,它辅助max函数找到最大元素。当max() 函数中有 key 参数时,求的是 value 的最大值,当没有 key 参数时,求的是 key 的最大值。

key可以对要比较的对象进行一些处理,以达到对对象进行特定规则的比较。

要在比较之前修改对象,或基于特定的属性/索引进行比较,必须使用key参数。

三、用法

获取字典中key的最大值


   
   
  1. dict1 = {'a': '11', 'c': '22', 'b': '33'}
  2. print(max(dict1))
  3. print(max(dict1.keys()))

获取字典中最大value对应的key值


   
   
  1. dict1 = {'a': '11', 'c': '22', 'b': '33'}
  2. print(max(dict1, key=dict1.get))
  3. print(max(dict1, key=lambda x: dict1[x]))

获取字典中最大value的值


   
   
  1. dict1 = {'a': '11', 'c': '22', 'b': '33'}
  2. print(max(dict1.values()))

获取句子中的最长单词


   
   
  1. str3 = "Life is short , I use python"
  2. print(str3.split())
  3. print(max(str3.split(), key=len))

获取list中的最大值


   
   
  1. list1 = ['11', 'zzz', '22', 'eee']
  2. print(max(list1))

获取list中的最大数值


   
   
  1. list2 = ['11', '3', '222', '67']
  2. print(max(list2, key=lambda x: int(x)))

获取list中的绝对值最大的值


   
   
  1. list3 = ['11', '-399', '222', '67']
  2. print(max(list2, key=lambda x: abs(int(x))))

获取元组list中指定索引的最大值


   
   
  1. list4 = [(1, 'a'), (3, 'c'), (4, 'e'), (-1, 'z')]
  2. print(max(list4, key=lambda x: x[1]))

四、实例


   
   
  1. str1 = "AAAaaa888ww8899sssss"
  2. print( max(str1, key=str1.count))
  3. print( '--------------------------')
  4. print( max(str1))
  5. print( '--------------------------')
  6. list1 = [ '11', 'zzz', '22', 'eee']
  7. print( max(list1))
  8. print( '--------------------------')
  9. list2 = [ '11', '-399', '222', '67']
  10. print( max(list2, key= lambda x: int(x)))
  11. print( '--------------------------')
  12. list3 = [ '11', '-399', '222', '67']
  13. print( max(list2, key= lambda x: abs( int(x))))
  14. print( '--------------------------')
  15. # list3 = [{'age': 20}, {'age': 23}]
  16. # print(max(list3))
  17. # print('--------------------------')
  18. list4 = [( 1, 'a'), ( 3, 'c'), ( 4, 'e'), (- 1, 'z')]
  19. print( max(list4, key= lambda x: x[ 1]))
  20. print( '--------------------------')
  21. dict1 = { 'a': '11', 'c': '22', 'b': '33'}
  22. print( max(dict1, key=dict1.get))
  23. print( max(dict1, key= lambda x: dict1[x]))
  24. dict1 = { 'a': '11', 'c': '22', 'b': '33'}
  25. print( max(dict1))
  26. print( max(dict1.keys()))
  27. dict1 = { 'a': '11', 'c': '22', 'b': '33'}
  28. print( max(dict1.values()))
  29. print( '--------------------------')
  30. str3 = "Life is short , I use python"
  31. print(str3.split())
  32. print( max(str3.split(), key= len))
  33. print( max(str3.split()))
  34. print( '--------------------------')

运行结果:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值