Skip to main content
 首页 » 编程设计

python之改进对 Twitter 查询的列表理解

2025年05月04日19lovecherry

我正在使用 twitter api,我有这个 python 代码设置:

call_twitter = urllib2.urlopen("http://search.twitter.com/search.json?q=hello") 
tweets_json = json.loads(call_twitter.read()) 

api json输出的结构是

/completed_in 
/stuff 
/stuff 
/results 
.../tweet1 
....../from_user 
....../tweet_text 
....../etc 
.../tweet2 
.../moretweets 

我正在尝试最小的列表理解来获取内部字典中的推文“from_user”和“text”属性。我能做的就是,

call_twitter = urllib2.urlopen("http://search.twitter.com/search.jsonq=alhamdulillah") 
tweets_json = json.loads(call_twitter.read()) 
 
    for tweet in tweets_json['results']: 
        text = tweet['text'] 
        from_user = tweet['from_user'] 

我将其改进为,

text_list = [tweet['text'] for tweet in tweets_json['results']] 
from_user_list = [tweet['from_user'] for tweet in tweets_json['results']] 

当我将“from_user”和“text”保存在两个不同的列表中时,我不确定它们是否总是相互对应(按顺序)。有没有办法在不使用 for 循环的情况下在一次迭代中同时获取“文本”和“from_user”?

我是一个 python 菜鸟,但提前感谢您的帮助:)

请您参考如下方法:

你可以做

text_list = [(tweet['text'], tweet['from_user']) for tweet in tweets_json['results']] 

这会给你一个元组列表,每个元组都是(text, user)。