python中max、min函数key的用法

目录

一、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(str1.split(), key = len))
#>>> python

3.找出句子中ASCII码最大的单词

x = 'Life is short , I use python'
ans = max(x.split(),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')
发布了46 篇原创文章 · 获赞 37 · 访问量 4530

猜你喜欢

转载自blog.csdn.net/weixin_42444693/article/details/104203479