目录
一、max中key的用法实例:
二、max中key是如何工作的?
一、max中key的用法实例:
1.找出字典中value最大对应的key
salaries={
'jasn':30090,
'nancy':100000,
'jack':10000,
'nick':2090
}
# 匿名函数
print('工资最多的人是:', max(salaries, key=lambda x: salaries[x]))
#>>> nancy
2.找出句子中最长的单词
str1 = 'Life is short , I use python'
print(max((), key = len))
#>>> python
3.找出句子中ASCII码最大的单词
x = 'Life is short , I use python'
ans = max((),key=lambda k: sum(ord(c) for c in k))
print('句子中ASCII码最大的单词为:', ans)
二、max中key是如何工作的?
python中的解释:
def max(*args, key=None): # known special case of max
"""
max(iterable, *[, default=obj, key=func]) -> value
max(arg1, arg2, *args, *[, key=func]) -> value
With a single iterable argument, return its biggest item. The
default keyword-only argument specifies an object to return if
the provided iterable is empty.
With two or more arguments, return the largest argument.
"""
pass
在Python 2及之后版本中,默认情况下key根据对象类型(例如,字符串始终大于整数)基于一组规则比较项目。
要在比较之前修改对象,或基于特定的属性/索引进行比较,必须使用key
参数。
范例1:
一个简单的示例,假设您有一个字符串形式的数字列表,但是您想按其整数值比较这些项目。
>>> lis = ['1', '100', '111', '2']
这里max
使用它们的原始值比较项目(按字典顺序比较字符串,这样您就可以得到'2'
输出):
>>> max(lis)
'2'
要通过整数比较项目,请使用key
简单的lambda
:
>>> max(lis, key=lambda x:int(x)) # compare `int` version of each item
'111'
示例2:应用于max
元组列表。
>>> lis = [(1,'a'), (3,'c'), (4,'e'), (-1,'z')]
默认情况下,max
将按第一个索引比较项目。如果第一个索引相同,则将比较第二个索引。在我的示例中,所有项目都有唯一的第一个索引,因此您将获得以下答案:
>>> max(lis)
(4, 'e')
但是,如果您想通过索引1的值比较每个项目,该怎么办?简单:使用lambda
:
>>> max(lis, key = lambda x: x[1])
(-1, 'z')