python确定关键字函数_Python min / max的关键字函数

你写的代码是

my_dict = {'a':2,'b':1}

min(my_dict, key=my_dict.get)

实际上这适用于min函数.

那么,min做什么?

min(a, b, c, ...[, key=func]) -> value

With a single iterable argument, return its lowest item. With two or more arguments, return the lowest argument.

此处的键用于传递自定义比较功能.

示例:输出max by list的长度,其中arg1,arg2都是列表.

>>>> max([1,2,3,4], [3,4,5], key=len)

[1, 2, 3, 4]

但是如果我想从列表中获取最大值,但是考虑元组的第二个元素呢?在这里我们可以使用官方documentation中给出的函数.def语句是复合语句,它们不能在需要表达式的地方使用,这就是为什么有时使用lambda的原因.

请注意,lambda等同于你在def的return语句中放置的内容.因此,您不能在lambda中使用语句,只允许表达式.

>>> max(l, key = lambda i : i[1])

(1, 9)

# Or

>>> import operator

>>> max(l, key = operator.itemgetter(1))

(1, 9)

所以函数基本上取决于iterable并传递比较标准.

现在在您的示例中,您正在迭代字典.在密钥中,您在这里使用get方法.

The method get() returns a value for the given key. If key is not available then returns default value None.

在这里,get方法中没有参数,它只是迭代字典的值.因此min给出了具有最小值的密钥.

对于max(enumerate(array_x),key = operator.itemgetter(1))

我们想比较数组的值而不是它们的索引.所以我们列举了数组.

enumerate(thing), where thing is either an iterator or a sequence, returns a iterator that will return (0, thing[0]), (1, thing07001), (2, thing[2])

现在我们已经使用了运算符模块的itemgetter函数. operator.itemgetter(n)构造一个可调用的函数,该函数假定一个可迭代对象(例如list,tuple,set)作为输入,并从中取出第n个元素.

你也可以使用这里的lambda函数

max(enumerate(array_x), key=lambda i: i[1])

因此,密钥中的功能范围几乎可以使用.我们可以使用许多功能,但唯一的动机是,它是比较的标准.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值