2

在下面的代码中,

[{word: score_tweet(tweet) for word in tweet} for tweet in tweets]

我得到一个字典列表:

[{u'soad': 0.0, u'<3': 0.0}, {u'outros': 0.0, u'acredita': 0.0}]

我只想获得一个平面字典,例如:

{u'soad': 0.0, u'<3': 0.0, u'outros': 0.0, u'acredita': 0.0}

我应该如何更改我的代码?注意:我使用的是 Python 2.7。

4

4 回答 4

3
{word: score_tweet(tweet) for tweet in tweets for word in tweet}
于 2013-05-13T00:08:05.953 回答
2

for循环移动到 dict 理解中:

{word: score_tweet(tweet) for tweet in tweets for word in tweet}

请记住,for一行中的两个循环很难阅读。我会做这样的事情:

scores = {}

for tweet in tweets:
    tweet_score = score_tweet(tweet)

    for word in tweet:
        scores[word] = tweet_score
于 2013-05-13T00:06:38.617 回答
0

您需要一个中间步骤。

words = []
tweets = ["one two", "three four"]
for tweet in tweets:
    words.extend(tweet.split())
scores = {word: score_tweet(word) for word in words}
于 2013-05-13T00:08:45.113 回答
0
"""
[{u'soad': 0.0, u'<3': 0.0}, {u'outros': 0.0, u'acredita': 0.0}] 
->
{u'soad': 0.0, u'<3': 0.0, u'outros': 0.0, u'acredita': 0.0}
"""
tweets_merged = {}
tweets = [{u'soad': 0.0, u'<3': 0.0}, {u'outros': 0.0, u'acredita': 0.0}]
for tweet in tweets:    
    tweets_merged = dict(tweets_merged.items() + tweet.items())
print tweets_merged
于 2013-05-13T00:17:18.113 回答