比较python列表

时间:2015-06-21 18:40:14

标签: python

我是python的新手,希望你能帮我解决这个问题,我正在使用python 3.4。

我有一个包含单词的列表,无论是正面还是负面,还有它的频率

这是原始列​​表:

finalSentiment = [('被劫持','否定'),('被劫持','肯定'),('劫持','否定'),('劫持','负面'),('劫持','消极的'),...(' dem','肯定')(' dem','消极')

我要做的是从我所拥有的列表中计算每个单词的正数和负数。 因此,如果负数的数字较高,则该字为负数。 然后我可以提出一个新列表,如: 例如:newList = [(' hijacked',' negative'),(' left',' negative'),. 。 。]

a)我尝试使用num = Count(finalSentiment).most_common()[:50]函数,并出现如下新列表。

  

num = [(('被劫持','否定'),302),(('左','否定') ,88,(('一个','否定'),79),((' befo','消极'),72 ),(('激进','否定'),70),((' tcot','否定'),70), (('油轮','否定'),55),(('喜欢','负'),47),(( '对','否定'),36),(('石油','否定'),26),(&# 39;劫持','肯定'),22),(('海盗','负面'),21),('人民','否定'),21),(('恐怖主义','消极'),21),(' loony&# 39;,'否定'),18),(('蠢货','消极'),18),((' get' ,'否定'),17),(('帐号','否定'),12),((' flag',& #39;否定'),11),(('时间','否定'),10),(('愤怒',' ;否定'),9),(('喜欢','肯定') ,8,((' day',' negative'),8),((' know',' negative'),8 ),((' dem','否定'),7),(('油轮','肯定'),7), (('长','否定'),6),(('左','肯定'),6),(( ' driver',' negative'),6),((' one',' positive'),6),(&# 39;得到','),6),((' tcot','肯定'),5),('激进的','积极'),5),((' befo','积极的'),5),(('海盗&# 39;,'肯定'),3),(('生活','消极'),3),((' oil' ,'肯定'),2),(('时间','肯定'),2),((' pay',& #39;否定'),2),(('无','肯定'),1),(('人',' ;积极'),1),(('蠢货','积极'),1),(('长','积极& #39;),1),(('帐号','肯定'),1),((' mt','消极' ), 1),(('得到','肯定'),1),((' day',' positive'),1) ,((' loony','肯定'),1),(('知道','肯定'),1),( ('父亲','否定'),1)]

我想要做的是比较单词频率正面或负面更高。 因此,如果负数较高,我想创建一个包含单词和负数的新列表。

例如:[('被劫持','否定'),('左','否定'),. 。 。]

每个单词在列表中只有正面或负面。

我尝试的是尝试使用for循环访问列表中的每个项目。

表示num:

中的项目
    unique_word = item[0]
    temp = unique_word[0]
    temp1 = unique_word[1]
    frequency = item[1]

但我无法弄清楚在访问数据后如何操作数据。

b)我使用counter()函数并列出这个列表:

cnt = Counter() 在finalSentiment中的单词:     cnt [word] + = 1 打印(CNT)

结果:计数器({('被劫持','否定'):302,('左','否定'): 88,(' one',' negative'):79,(' befo',' negative'):72,(') ; tcot','否定'):70,('激进','负面'):70,('油轮', '否定'):55,('喜欢','否定'):47,('右','否定&# 39;):36,('油','否定'):26,('被劫持','肯定'):22, ('海盗'负面'):21,('恐怖主义','否定'):21,('人& #39;,'否定'):21,('蠢货','否定'):18,(' loony',&# 39;否定'):18,('得到','否定'):17,('帐号','否定' ):12,(' flag',' negative'):11,(' time',' negative'):10,(& #39;愤怒','否定'):9,('喜欢','肯定'):8,(' day') ;,'否定e'):8,('知道','否定'):8,(' dem','否定'): 7,('油轮','肯定'):7,('得到','否定'):6,(') ;左边','肯定'):6,('一个','肯定'):6,('驱动程序', '否定'):6,('长','否定'):6,('激进','肯定' 39;):5,(' befo','肯定'):5,(' tcot','肯定'):5, ('海盗'肯定'):3,('生活','消极'):3,('时间& #39;,'肯定'):2,('支付','消极'):2,('石油',&# 39;积极'):2,(' mt','否定'):1,(' loony','肯定' ):1,(' morons',' positive'):1,(' long',' positive'):1,(& #39;得到','肯定'):1,('遗憾地','消极'):1,(' day') ;,'肯定'):1,('无','肯定'):1, ('父亲','否定'):1,('帐号','肯定'):1,('马来西亚& #39;,'否定'):1,('右','肯定'):1,('人',&# 39;肯定'):1,('知道','肯定'):1,('看','肯定' ):1})

我现在遇到的问题是比较“被劫持”这个词的例子,负数高于新列表中的“被劫持”字样。应该是否定的,这样: 例如:newList = [(' hijacked',' negative'),(' left',' negative'),. 。 。]

c)或者我可能应该自己计算正数和负数,而不是使用most_common()函数或counter()。 我计算正负数的问题是因为列表中有多个单词。如果这个词只被“劫持”。正面和负面附加我认为我可以解决问题。

1 个答案:

答案 0 :(得分:0)

with open("file1.txt", "rt") as finp:
    with open("file2.txt", "wt") as fout:
        for line in finp.readlines():
            if line.startswith("#####") or line.startswith("* [x]"):
                fout.write(line)

您可以通过从列表中创建字典并比较键和值来尝试这样的事情。