Python 改进twitter查询中的列表理解

Python 改进twitter查询中的列表理解,python,json,twitter,Python,Json,Twitter,我正在使用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 ....../twe

我正在使用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
我正在尝试最小的列表理解来获取内部字典中的tweets“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循环

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

您可以这样做

text_list = [(tweet['text'], tweet['from_user']) for tweet in tweets_json['results']]
这将为您提供一个元组列表,每个元组都是
(文本,用户)

text_list = [(tweet['text'], tweet['from_user']) for tweet in tweets_json['results']]
这将为您提供一个元组列表,每个元组都是
(文本,用户)

尝试以下操作:

tweets = [(t['text'], t['from_user']) for t in tweets_json['results']]
这将为您提供一个元组列表,其形式为
(tweet,user)

尝试以下方法:

tweets = [(t['text'], t['from_user']) for t in tweets_json['results']]

这将为您提供一个元组列表,其形式为
(tweet,user)

,就可读性而言,最好保留原始的for循环

tweets = [(tweet['text'], tweet['from_user']) for tweet in tweets_json['results']]
正如Gordon Bailey所建议的,这是一种在元组
(文本,用户)
中获取所需信息的好方法

就速度而言:列表理解可能更好


通常,如果您正在构建复合值,则列表理解是可以接受的。如果您使用循环的副作用(例如打印),则显式循环更好。

就可读性而言,最好保留原始的循环

tweets = [(tweet['text'], tweet['from_user']) for tweet in tweets_json['results']]
正如Gordon Bailey所建议的,这是一种在元组
(文本,用户)
中获取所需信息的好方法

就速度而言:列表理解可能更好

通常,如果您正在构建复合值,则列表理解是可以接受的。如果您使用循环来解决它的副作用(例如打印),那么显式循环更好