reducer输出为嵌套列表而非预期字符串,如何调整代码实现需求
嵌套列表输出原因解释
collections.Counter的most_common(n)方法的返回值本身就是由(元素, 出现次数)元组组成的列表,你当前代码直接将这个列表作为yield返回值的第二部分,所以输出结果自然会呈现嵌套列表结构- 代码中
sorted(x, key=x.get, reverse=True)这一行没有实际作用:sorted方法会返回排序后的新序列,你没有赋值给变量也没有后续使用,属于冗余代码
代码修改方案
你需要从most_common(3)的返回结果里提取每个元组的第一个元素(也就是关键词本身),再用空格拼接为字符串即可,修改后代码如下:
def reducer(self, year, words): x = Counter(words) most_common = x.most_common(3) # 提取前3个高频词,拼接为空格分隔的字符串 top_words = ' '.join([item[0] for item in most_common]) yield (year, top_words)
修改后就会输出你预期的"2020" "coronavirus china economy"格式结果。
内容的提问来源于stack exchange,提问作者CKZ
相关产品推荐
相关产品推荐

