当我尝试进行情绪分析(POS 或 NEG 文本)时,如何使用 lambda 和排序方法解决此错误?
how to solve this error with lambda and sorted method when i try to make sentiment analysis (POS or NEG text)?
输入代码:
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'
如何解决?
如果我正确理解了你的 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]
这与您最初尝试的区别在于,我将一个参数 (x) 传递给了 lambda,并且 x 是一个长度为 2 的元组 - x[0] 是单词,x[1] 是分数。由于我们要按分数排序,所以我们使用 x[1].
输入代码:
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'
如何解决?
如果我正确理解了你的 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]
这与您最初尝试的区别在于,我将一个参数 (x) 传递给了 lambda,并且 x 是一个长度为 2 的元组 - x[0] 是单词,x[1] 是分数。由于我们要按分数排序,所以我们使用 x[1].