我使用Tweepy
获取热门话题列表。它基本上是转发次数最多的当前推文列表。当API对象返回我的推文列表时,我会得到Status
个对象的列表。
我需要根据转推的数量对这些Status
对象进行排序。该属性为retweet_count
。我不知道如何正确地做到这一点,因为内置排序方法不起作用,因为这是一个嵌套对象
这是我到目前为止所做的:
def getTrendingTopics(self):
'''
Get popular tweets by getting current tweets.
Sort the tweets according to the number of retweets, from high to low.
Return the 15 most popular tweets in a list.
'''
trendingTopicsList = {}
publicTweets = self.api.home_timeline()
for tweet in publicTweets:
retweetCount = str(len(tweet.retweets()))
##Sort Tweets here?
print(tweet.text + "\n Retweets: " + retweetCount + "\n")
#return the tweets in a list
返回推文很容易,但我如何对它们进行排序?
我尝试了几种方法,但都没有效果。我把那个代码留了出来。
感谢任何帮助。
答案 0 :(得分:0)
只需使用python sorted将其应用于tweet
对象即可。请参阅下面的代码与玩具示例。
In [1]:
class Tweet:
def __init__(self, text, retweets):
self.text = text
self.rt = retweets
def retweets(self):
return self.rt
In [2]:
t1 = Tweet("text1", 2)
t2 = Tweet("text2", 17)
t3 = Tweet("text3", 3)
l = [t1, t2, t3]
[t.text for t in l]
Out[2]:
['text1', 'text2', 'text3']
In [3]:
from operator import methodcaller
lsorted = sorted(l, key=methodcaller('retweets'), reverse=True)
[t.text for t in lsorted]
Out[3]:
['text2', 'text3', 'text1']