关于#sorted#的问题,如何解决?(标签-ar|关键词-File)

这是什么情况呀 有兄弟能帮忙解答一下嘛

  # 找出最大词频
        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)

有帮助的话,请点采纳~