Python内置最大/最小函数的默认键

Chr*_*ley 8 python

内置函数maxminPython 的文档表明key参数应该像在sort函数中一样运行.换句话说,我应该能够做到这一点:

a = [1, 2, 3, 4]
max(a, key=None)
Run Code Online (Sandbox Code Playgroud)

但是,这会引发错误: TypeError: 'NoneType' object is not callable

但是,如果我使用该sort函数做类似的事情,我会得到预期的结果:

a = [1, 2, 3, 4]
a.sort(key=None)
Run Code Online (Sandbox Code Playgroud)

不会生成错误,并使用默认排序.几本书也暗示我应该能够在maxmin函数中逃脱相同的行为.请参阅Nutshell中的Python摘录.

这真的是maxmin函数的默认行为吗?应该是吗?它们不应该与排序功能相匹配吗?

Dav*_*ess 23

你无意中发现了语言的实现差异,.sortmax不仅仅是语言问题.

list.sort()采用关键字参数"key",其默认为None.这意味着sort方法无法区分您提供key=None参数或仅仅采用默认值.在任何一种情况下,它表现得好像没有提供键功能.

max另一方面,检查是否存在关键字参数"key".它没有默认值,如果存在,它的值将用作键函数.

无论哪种方式,密钥都不应该作为None提供.它应该是一个函数,用于从列表/迭代中的项中提取"键"值.例如:

a = [("one", 1), ("two", 2), ("three", 3), ("four", 4)]
a.sort(key=lambda item:item[1])
Run Code Online (Sandbox Code Playgroud)


jul*_*ria 7

@大卫的答案是完美的.只是添加,如果你想知道,默认key值(in sort和in max/ minfunctions)是这样的:

lambda x: x
Run Code Online (Sandbox Code Playgroud)