一、背景
起源于一个问题:怎样找到字符串中出现次数最多的字符
其实使用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'}
-
-
获取字典中最大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(max(str3.split(), key=len))
获取list中的最大值
-
list1 = ['11', 'zzz', '22', 'eee']
-
获取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(
'--------------------------')
-
-
-
list1 = [
'11',
'zzz',
'22',
'eee']
-
-
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('--------------------------')
-
-
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.keys()))
-
-
dict1 = {
'a':
'11',
'c':
'22',
'b':
'33'}
-
print(
max(dict1.values()))
-
print(
'--------------------------')
-
-
-
str3 =
"Life is short , I use python"
-
-
print(
max(str3.split(), key=
len))
-
print(
max(str3.split()))
-
print(
'--------------------------')
运行结果: