将列表的另一个函数调用到列表的新函数列表

时间:2016-10-27 00:43:18

标签: python

我尝试使用我以前的功能calculate_total_sentiment(tweet1):,将推文分类为"very positive", "positive", "neutral, "negative""very negative"的不同类别。

现在我想使用group_by_sentiment的这个新函数,它接受一个字符串列表,我想将它们归类为与我的calculate_total_sentiment相同的类别。

我如何将它们整理出来?下面是我的calculate_total_sentiment代码,它可以解决如何将这个功能实现到这个新功能并使其归入同一类别。

group_by_sentiment的例子是

group_by_sentiment(['sad', '#notok'])
    [[], [], [], [], ['sad', 'notok']] 

其中列表的最后一个将包含所有非常负面的类别,而第一个是非常积极的

def calculate_total_sentiment(tweet1):
    total = negative_word_score(tweet) + positive_word_score(tweet) + \
    positive_hashtag_score(tweet) + negative_hashtag_score(tweet) + \
    emoticon_score(tweet)
    if total > 2:
        return ("Very Positive")
    elif total > 0:
        return ("Positive")
    elif total == 0:
        return ("Neutral")
    elif total > -3:
        return ("Negative")
    else:
        return ("Very Negative")


def group_by_sentiment(L):
    very_negative = []
    negative = []
    neutral = []
    positive = []
    very_positive = []
    output = [very_positive, positive, neutral, negative, very_negative]
    for char in range(len(L)):
        if calculate_total_sentiment(tweet1) == 'Very Positive':
            output[0].append(very_positive)
        elif calculate_total_sentiment(tweet1) == 'Positive':
            output[1].append(positive)
        elif calculate_total_sentiment(tweet1) == 'Neutral':
            output[2].append(neutral)
        elif calculate_total_sentiment(tweet1) == 'Negative':
            output[3].append(negative)
        elif calculate_total_sentiment(tweet1) == 'Very Negative':
            output[4].append(very_negative)
    return output

1 个答案:

答案 0 :(得分:0)

我不确定我完全理解你的问题,但是你有没有理由不使用字典(或者这个特例是defaultdict):

from collections import defaultdict
def group_by_sentiment(L):
    output = defaultdict(list)
    for tweet in L:
        output[calculate_total_sentiment(tweet)].append(tweet)]
    return output
>>> group_by_sentiment(['sad', '#notok'])
defaultdict(list, {'Very Negative': ['sad', '#notok']})

您的代码显然还有许多其他问题,例如tweet未在calculate_total_sentiment中定义,因为arg被称为tweet1