代码的github链接如下:
https://github.com/AlchemyAPI/alchemyapi-recipes-twitter
运行recipe.py时出现以下错误:
Traceback (most recent call last):
File "recipe.py", line 340, in <module>
main(sys.argv[1], int(sys.argv[2]))
File "recipe.py", line 43, in main
print_results()
File "recipe.py", line 303, in print_results
avg_pos_score = mean_results['result'][2]['avgScore']
TypeError: 'CommandCursor' object has no attribute '__getitem__'
我使用的是python版本2.7.6 请帮我解决这个问题。
答案 0 :(得分:2)
是的,我终于得到了正确的输出。感谢Games Brainiac帮助我弄明白。
mean_results = list(tweets.aggregate([{"$group" : {"_id": "$sentiment",
"avgScore" : { "$avg" : "$score"}}}]))
avg_pos_score = mean_results[1]['avgScore']
avg_neg_score = mean_results[0]['avgScore']
mean_results将包含字典实体列表(在本例中为3个实体 - neg,pos,neutral)。 所以mean_results [0]指的是负面实体。 mean_results [1]指的是正实体。 等等。 mean_results [1] [&#39; avgScore] =正实体的平均得分。 等等...
答案 1 :(得分:1)
我认为您需要将第301行更改为304以反映API中的新更改。
首先,改变这一行:
mean_results = tweets.aggregate([{"$group" : {"_id": "$sentiment", "avgScore" : { "$avg" : "$score"}}}])
到
mean_results = list(tweets.agg....)
现在,您不再需要result
使用CommandCursor
。
相反,你需要做的是:
list(mean_results[2]['avgScore'])
相反,也要重复下一行。只需删除result
部分。