Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python &引用;“关键”;参数关键字仅在list.sort()中,但在sorted()中为位置或关键字_Python_List_Python 3.x_Sorting - Fatal编程技术网

Python &引用;“关键”;参数关键字仅在list.sort()中,但在sorted()中为位置或关键字

Python &引用;“关键”;参数关键字仅在list.sort()中,但在sorted()中为位置或关键字,python,list,python-3.x,sorting,Python,List,Python 3.x,Sorting,在Python3中,列表可以用两种方式排序。可以就地使用,也可以使用生成新列表 从签名中可以看出,key是list.sort()中的参数,但是sorted()中的位置或关键字参数。这意味着这样的调用将失败: >>> [{'i': 42}, {'i': 0}].sort(lambda x:x['i']) Traceback (most recent call last): File "<stdin>", line 1, in <module> Type

在Python3中,
列表可以用两种方式排序。可以就地使用,也可以使用生成新列表

从签名中可以看出,
key
list.sort()
中的参数,但是
sorted()中的位置或关键字参数。这意味着这样的调用将失败:

>>> [{'i': 42}, {'i': 0}].sort(lambda x:x['i'])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: must use keyword argument for key function

这背后的原因是什么?我假设有人会使用只包含关键字的参数来执行更清晰的代码,对吗?如果是这样的话,为什么在这些函数中有两种不同的方式——可以说是非常相似的——呢?

排序
事实上也需要
反向
作为关键字参数;文件明确指出:

有两个可选参数,必须指定为关键字参数


只有函数签名(错误)不包含
*
;可能是文档中的疏忽。

您是否尝试提供
键作为排序的
的位置参数?它将失败,您需要使用关键字参数。您链接的文档状态:有两个可选参数,必须指定为关键字参数。实际上我没有。愚蠢的我,抱歉。嗯,这种情况发生了:-)我的错,实际上应该尝试一下,而不是在阅读函数签名后问一个问题。我已经准备了一份修复此差异的PR,并将其合并到3.6和主分支,请参阅和
>>> [{'i': 42}, {'i': 0}].sort(key=lambda x:x['i'])