本篇文章小编给大家分享一下Python max函数中key的用法及原理代码解析,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。
一、背景
起源于一个问题:怎样找到字符串中出现次数最多的字符
其实使用max函数就能很轻松的解决这个问题:
代码:
str1 = "AAAaaa8888899sssss" print(max(str1, key=str1.count))
结果:8
二、原理
max()函数用于获得给定的可迭代对象中的最大值。
key是max()函数的一个参数,它辅助max函数找到最大元素。当max() 函数中有 key 参数时,求的是 value 的最大值,当没有 key 参数时,求的是 key 的最大值。
key可以对要比较的对象进行一些处理,以达到对对象进行特定规则的比较。
要在比较之前修改对象,或基于特定的属性/索引进行比较,必须使用key参数。
三、用法
获取字典中key的最大值
dict1 = {'a': '11', 'c': '22', 'b': '33'} print(max(dict1)) print(max(dict1.keys()))
获取字典中最大value对应的key值
dict1 = {'a': '11', 'c': '22', 'b': '33'} print(max(dict1, key=dict1.get)) print(max(dict1, key=lambda x: dict1[x]))
获取字典中最大value的值
dict1 = {'a': '11', 'c': '22', 'b': '33'} print(max(dict1.values()))
获取句子中的最长单词
str3 = "Life is short , I use python" print(str3.split()) print(max(str3.split(), key=len))
获取list中的最大值
list1 = ['11', 'zzz', '22', 'eee'] print(max(list1))
获取list中的最大数值
list2 = ['11', '3', '222', '67'] print(max(list2, key=lambda x: int(x)))
获取list中的绝对值最大的值
list3 = ['11', '-399', '222', '67'] print(max(list2, key=lambda x: abs(int(x))))
获取元组list中指定索引的最大值
list4 = [(1, 'a'), (3, 'c'), (4, 'e'), (-1, 'z')] print(max(list4, key=lambda x: x[1]))
四、实例
str1 = "AAAaaa888ww8899sssss" print(max(str1, key=str1.count)) print('--------------------------') print(max(str1)) print('--------------------------') list1 = ['11', 'zzz', '22', 'eee'] print(max(list1)) print('--------------------------') list2 = ['11', '-399', '222', '67'] print(max(list2, key=lambda x: int(x))) print('--------------------------') list3 = ['11', '-399', '222', '67'] print(max(list2, key=lambda x: abs(int(x)))) print('--------------------------') # list3 = [{'age': 20}, {'age': 23}] # print(max(list3)) # print('--------------------------') list4 = [(1, 'a'), (3, 'c'), (4, 'e'), (-1, 'z')] print(max(list4, key=lambda x: x[1])) print('--------------------------') dict1 = {'a': '11', 'c': '22', 'b': '33'} print(max(dict1, key=dict1.get)) print(max(dict1, key=lambda x: dict1[x])) dict1 = {'a': '11', 'c': '22', 'b': '33'} print(max(dict1)) print(max(dict1.keys())) dict1 = {'a': '11', 'c': '22', 'b': '33'} print(max(dict1.values())) print('--------------------------') str3 = "Life is short , I use python" print(str3.split()) print(max(str3.split(), key=len)) print(max(str3.split())) print('--------------------------')
运行结果:
茶杯头甜蜜终章dlc 官方手机版v1.0.0.3
下载火柴人传说暗影格斗内置菜单 最新版v3.0.1
下载荒野乱斗测试服 安卓版v61.10.3
下载荒野乱斗彩虹服 安卓版v61.10.3
下载寒霜启示录 安卓版v1.25.10
寒霜启示录是一款生存模拟游戏,不少玩家可能对于末日都有着自己
末日城堡免广告版 安卓最新版v0.7.1
末日城堡免广告版是一款非常好玩的模拟经营类游戏,内部可以不看
甜蜜人生模拟器 最新版v1.4.5
甜蜜人生模拟器是一款非常好玩的模拟恋爱手游,玩家在这里能够对
武器锻造师内置功能菜单 v10.4
武器锻造师内置菜单版是游戏的破解版本,在该版本中为玩家提供了
开放空间overfield 安卓版v1.0.5
开放空间Overfield是一款箱庭养成经营手游,让你在广阔