[英]Improving list comprehension on twitter query
我正在使用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']]
當我將它們分別保存在2個不同的列表中時,我不確定“ from_user”和“ text”是否始終彼此對應(按順序)。 有沒有一種方法可以在不使用for循環的情況下一次獲取“ text”和“ from_user”?
我是python noob,但感謝您的預先幫助:)
你可以做
text_list = [(tweet['text'], tweet['from_user']) for tweet in tweets_json['results']]
這將為您提供一個元組列表,每個元組為(text, 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所建議的那樣,這是一種在元組(text, user)
獲取所需信息的好方法。
就速度而言:列表理解可能會更好。
通常,如果您要構建復合值,則可以使用列表理解。 如果您將循環用於副作用(例如打印),則顯式循環會更好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.