我正在使用Thavelick的摘要程序进行一些编辑,但是找不到解决此错误的方法:
TypeError:
()缺少1个必需的位置参数:“ s2”
这是我所知道的引起错误的代码:
def reorder(input, output):
output.sort(key=lambda s1, s2: input.find(s1)-input.find(s2))
return output
Thavelick的摘要链接:https://dialogflow.com/docs/agents/multilingual
答案 0 :(得分:1)
该代码可能使用cmp
的{{1}}参数,该参数现已消失。您不能只使用相同的sort
。 lamdba
函数必须仅接受一个参数。
有一种盲目转换代码的方法:使用functools.cmp_to_key
。但是,我相信在这种情况下,提供适当的键功能会更容易:
key
也可以写成简单的形式:
output.sort(key=lambda s: input.find(s))
如果output.sort(key=input.find)
,表达式a - b
返回一个负值,如果a < b
,则返回0
,如果a == b
,则返回正值。因此,这意味着您的代码正在根据a > b
中包含的元素的位置对output
进行排序。
所以input
函数只是查找key
中子字符串的位置。
要使用input
,您可以这样做:
cmp_to_key
答案 1 :(得分:0)
从文档中:https://docs.python.org/3/howto/sorting.html#key-functions
list.sort()和sorted()都有一个关键参数,用于指定在进行比较之前在每个列表元素上要调用的函数。
因此
output.sort(key=lambda s: input.find(s[0])-input.find(s[1]))