1

代码的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 请帮我解决这个问题。

4

2 回答 2

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]['avgScore]=正实体的平均得分。等等...

于 2015-04-17T15:24:29.750 回答
1

我认为您需要将第 301 行更改为 304 以反映 API 中的新更改。

首先,改变这一行:

mean_results = tweets.aggregate([{"$group" : {"_id": "$sentiment", "avgScore" : { "$avg" : "$score"}}}])

mean_results = list(tweets.agg....)

所以现在,你不再需要使用resultfor 了CommandCursor

相反,您需要做的是:

list(mean_results[2]['avgScore'])

相反,也重复下一行。只需卸下result零件。

于 2015-04-17T12:47:53.820 回答