max和min 从list列表字典dict、列表元祖tuple、列表字符串string中提取最大值和最小值

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.
    """

key是怎么工作?

例1:

一个简单的例子,假设您有一个字符串形式的数字列表,但是您希望从中提取最大的字符串数字。

lis = ['1', '100', '111', '2']
max(lis)

>>> "2"

在这里,max使用它们的原始值比较项(字符串按字典顺序进行比较,因此输出结果为“2”)

要按整数值来进行,需要使用带简单lambda:

# 将字符串转换成int 进行比较
max(lis, key=lambda x:int(x))  

>>> '111'

lis = ['1', '100', '111', '2', 2, 2.57]
max(lis, key=lambda x: int(x))
>>> '111'

示例2:将max应用于元组列表。

默认情况下,max将根据第一个索引比较项目。如果第一个索引是相同的,那么它将比较第二个索引。在我的示例中,所有项目都有一个唯一的第一个索引,因此您可以得到以下答案:

lis = [(1,'a'), (3,'c'), (4,'e'), (-1,'z')]
max(lis)

 >>> (4, 'e')

但是,如果你想用索引1的值来比较每一项呢?简单:使用lambda:

max(lis, key = lambda x: x[1])

>>> (-1, 'z')

示例3:将max应用于字典列表。

lis = [{"a":5},{"a":8},{"a":4}]
max(lis, key = lambda x: x["a"])

>>> {"a":8}

最后:

同理min和max用法一样

本文地址: http://chenxm.cc/article/1124.html
版权声明: 本文为原创文章,版权归  陈新明  所有,欢迎分享本文,转载请保留出处!
上一篇: python小技巧:读取大文件 一行一行读取
下一篇: mysql sql 删除重复数据只保留一条
发表评论

还没有留言,还不快点抢沙发?