首页 > 解决方案 > 如何比较 Python 列表中的对?

问题描述

我正在尝试遍历两个列表的串联列表,该列表本质上是一袋单词-示例输出产生 [('brexit', 11), ('say', 11), ('uk', 7), ( 'eu', 6), ('deal', 5), ('may', 5), ..., ('brexit', 35), ('say', 28), , ('may', 5 ), ('英国', 1), ... ]

从 .txt 文件中收集所有文本输入后,我删除了停用词并使用词干提取从时态中删除重复项。

我要采取的下一步是遍历列表并找出给定单词出现次数的差异-我希望将“brexit”、“say”和“uk”标记为两者中的任何一个都具有重要意义出现次数或只是差异。我的代码开始(部分是python,部分是伪代码)如下。

def findSimilarities (word, count):
    for (word, count) in biasDict:
        if word == word and count != count:
            print (word, count - count)
        elif word ==word and count == count:
            del (word, count)
        (word, count)++

有关如何处理此问题并编辑代码以使其工作的任何建议?如果它会更好,我可以让单词来自两个单独的列表(这就是它们的创建方式;我在创建它们之后将它们连接起来)。

非常感谢。

标签: pythonlistloopsnltk

解决方案


合并事件的想法对我来说似乎很好。这是我的实现。任何评论或优化表示赞赏。

def merge_list(words_count_list):
updated_list = list()
words_list = list()
for i in range(len(words_count_list)):
    word = words_count_list[i][0]
    count = words_count_list[i][1]
    if word not in words_list:
        words_list.append(word)
        for j in range(i+1,len(words_count_list),1):
            if word == words_count_list[j][0]:
                count += words_count_list[j][1]
        updated_list.append((word,count))
return updated_list

print(merge_list([('brexit', 11), ('say', 11), ('uk', 7), ('eu', 6), ('deal', 5), ('may', 5), 
                                                ('brexit', 35), ('say', 28),('may', 5), ('uk', 1)]))

输出:

[('brexit', 46), ('say', 39), ('uk', 8), ('eu', 6), ('deal', 5), ('may', 10)]

现在,您可以指定字数的阈值,按字数排序,然后删除最重要的字。


推荐阅读