首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从列表中输出元素以及它们在文档中出现的次数?

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

Stack Overflow用户
提问于 2019-01-10 21:12:56
回答 1查看 308关注 0票数 0

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

作为参考,代码中的“条目”指的是具有"word“和"synonyms”属性的一类对象。主题词表是一个条目对象列表,语料库是一个文档列表,每个文档是一个字符串列表。

我设法做到的是:第2-6行涉及创建一个列表All_words,该列表包含关键字和关键字的同义词。第7-12行是问题所在。我只能让函数输出All_words中的第一个Search_word及其出现的次数。

代码语言:javascript
复制
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)

作为参考,如果关键词是“悲伤”,All_words应该是:‘悲伤’,‘沮丧’,‘沮丧’,‘不快乐’我目前的结果是:

代码语言:javascript
复制
('sad', 4)

我预计结果如下所示:

代码语言:javascript
复制
(('sad', 4), ('upset', 2), ('depressed', 2), ('unhappy', 0)) 

我觉得我遗漏了一些简单的东西。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-10 21:18:19

问题是您的返回语句-- return Search_word, countfor循环中。因此,在搜索完第一个单词后,它将立即执行return并停止执行。

您必须将return语句移到for循环之外运行,并对其稍作修改,以便从您要搜索的所有单词中输出结果。

另外,这只是一个风格上的问题--变量名不应该以大写字母开头。

关于如何存储所有不同的同义词及其对应的计数,见下文:

代码语言:javascript
复制
answer = []
for Search_word in All_words:
    count = 0
    ....
    answer.append([Search_word, count])
return answer
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54129498

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档