代码之家  ›  专栏  ›  技术社区  ›  Sara Mahmoud

当我尝试进行情绪分析(POS或NEG文本)时,如何使用lambda和排序方法解决此错误?

  •  0
  • Sara Mahmoud  · 技术社区  · 8 年前

    输入代码:

    best = sorted(word_scores.items(), key=lambda w, s: s, reverse=True)[:10000]

    结果:

    Traceback (most recent call last):
    File "C:\Users\Sarah\Desktop\python\test.py", line 78, in <module>
    best = sorted(word_scores.items(), key=lambda w, s: s, reverse=True)[:10000]
    TypeError: <lambda>() missing 1 required positional argument: 's'
    

    我该如何解决它?

    1 回复  |  直到 8 年前
        1
  •  0
  •   sjw    8 年前

    如果我了解你的 word_scores 正确地使用字典(键是单词,值是代表分数的整数),您只需查看分数最高的单词的有序列表,简单如下:

    best = sorted(word_scores, key=word_scores.get, reverse=True)[:10000]
    

    如果要使用lambda获取元组的有序列表,其中每个元组是一个单词和一个分数,并且它们是按分数排序的,可以执行以下操作:

    best = sorted(word_scores.items(), key=lambda x: x[1], reverse=True)[:10000]
    

    这与您最初尝试的不同之处在于,我向lambda传递了一个参数(x),x是一个长度为2的元组,x[0]是单词,x[1]是分数。因为我们想按分数排序,所以使用x[1]。