1

私は 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」を 2 つの異なるリストに保存したときに、それらが常に (順番に) 対応するかどうかはわかりません。forループを使用せずに、1回の反復で「テキスト」と「from_user」の両方を取得する方法はありますか?

私はPython初心者ですが、事前に助けてくれてありがとう:)

4

3 に答える 3

4

あなたができる

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

これにより、タプルのリストが得られます。各タプルは(text, user).

于 2012-08-08T20:03:19.147 に答える
1

これを試して:

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

これにより、フォームのタプルのリストが得られます(tweet, user)

于 2012-08-08T20:04:38.343 に答える
1

可読性に関する限り、の for ループを保持する方がよい場合があります。

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

ゴードン・ベイリーが示唆しているように、タプルで必要な情報を取得する良い方法です(text, user)

速度に関する限り、リストの理解はより良いかもしれません。

一般に、複合値を作成する場合は、リスト内包表記が受け入れられます。ループの副作用 (印刷など) を使用している場合は、明示的なループの方が優れています。

于 2012-08-08T20:08:32.697 に答える