这是什么情况呀 有兄弟能帮忙解答一下嘛
# 找出最大词频
sorted_lists = sorted(target_list.items(), lambda x, y: cmp(x[1], y[1]), reverse=True)
# print len(target_list)
#去除问句中的关键词
sorted_lists2 = []
# 候选队列
for i, st in enumerate(sorted_lists):
# print st[0]
if st[0] in keywords:
continue
else:
sorted_lists2.append(st)
Traceback (most recent call last):
File "D:/IJspace/QA-Snake-master/QA/MainProgram.py", line 97, in
ans = search_summary.kwquery(input_message)
File "D:\IJspace\QA-Snake-master\QA\QACrawler\search_summary.py", line 267, in kwquery
sorted_lists = sorted(target_list.items(), lambda x, y: cmp(x[1], y[1]), reverse=True)
TypeError: sorted expected 1 argument, got 2
该回答引用ChatGPT
这段代码在使用 sorted 函数时传入了两个参数,但是 sorted 函数只能接收一个参数。根据代码的格式,猜测这里是使用了 Python 2 的语法,而在 Python 3 中,sorted 函数的参数应该是一个可迭代对象,例如列表、元组、集合等,而不是用逗号隔开的两个对象。
在 Python 2 中,sorted 函数的语法是:
sorted(iterable[, cmp[, key[, reverse]]])
其中,cmp 参数是一个比较函数,用于指定元素之间的比较规则。而在 Python 3 中,这个参数被移除了,而是使用 key 参数来指定元素之间的比较规则,例如:
sorted(iterable, key=None, reverse=False)
所以,如果你使用的是 Python 3,那么应该将这里的 sorted 函数改为按照 Python 3 的语法使用。例如:
sorted_lists = sorted(target_list.items(), key=lambda x: x[1], reverse=True)
这样就可以按照元素的第二个值(即词频)进行排序了。如果你需要按照第一个值排序,那么可以使用 key=lambda x: x[0]。同时,需要注意的是,Python 3 中的 sorted 函数返回的是一个新的排序后的列表,而不是在原列表上进行排序。如果你需要在原列表上进行排序,可以使用列表的 sort 方法。
需要用关键字参数key接收下
sorted_lists = sorted(target_list.items(), key=lambda x, y: cmp(x[1], y[1]), reverse=True)
有帮助的话,请点采纳~