如何从列表中输出元素以及它们在文档中出现的次数?

2024-05-16 01:48:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我是一个两天大的胎儿,当谈到Python和一般编程时,所以我需要一些指导。基本上,我正在尝试编写一个函数,该函数将遍历文档列表,并计算特定关键字及其同义词出现的次数。你知道吗

作为参考,代码中的“Entry”是指一类具有“word”和“synonyms”属性的对象。同义词库是一个条目对象列表,语料库是一个文档列表,每个文档都是一个字符串列表。你知道吗

我做到的是: 第2-6行涉及创建一个包含关键字及其同义词的列表,即所有单词。 第7-12行就是问题所在。我只能得到输出所有单词中第一个搜索单词及其出现次数的函数。你知道吗

def search(keyword) : #user inputs keyword
    All_words = [keyword]
    for Entry in Thesaurus: 
        if Entry.word == keyword:
            for Word in Entry.synonyms:
        All_words.append(Word) 
    for Search_word in All_words:
        count = 0
        for Document in Corpus: 
            for Word in Document:
                if Search_word == Word:
                    count = count + 1
        return Search_word, count

input = "sad"
output = search(input) 
print(output)

作为参考,如果关键字为“sad”,则所有的\u单词应为:[“sad”、“心烦”、“沮丧”、“不开心”] 我目前的结果是:

('sad', 4)

我希望结果是这样的:

(('sad', 4), ('upset', 2), ('depressed', 2), ('unhappy', 0)) 

我觉得我错过了一些简单的东西。你知道吗


Tags: 函数in文档列表forcount关键字all
1条回答
网友
1楼 · 发布于 2024-05-16 01:48:40

问题是返回语句return Search_word, countfor循环中。因此,在它完成对第一个单词的搜索之后,在本例中是sad,它将立即return并停止执行。你知道吗

您必须将return语句移到for循环之外运行,并稍微更改它,以便它输出您正在搜索的所有单词的结果。你知道吗

另外,只是样式变量名不应该以大写字母开头。你知道吗

至于如何存储所有不同的同义词及其对应的计数,请参见以下内容:

answer = []
for Search_word in All_words:
    count = 0
    ....
    answer.append([Search_word, count])
return answer

相关问题 更多 >