重复单词列表

2024-05-21 00:21:33 发布

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

如何返回列表中的重复单词?你知道吗

我被要求创建一个函数word_count(text, n)。文本被转换成一个列表,然后返回重复n次的单词。我试过写,但似乎每一个字都有回报。你知道吗

>>> repeat_word_count("one one was a racehorse two two was one too", 3)
['one']

我使用了for循环并对其进行了调节。我想发布我的代码,但我害怕我的学校会在网上找到代码:(


Tags: 函数代码text文本列表forcount单词
1条回答
网友
1楼 · 发布于 2024-05-21 00:21:33

我想我知道你想做什么,在没有看到你的代码的情况下,我无法指出你到底哪里出错了,所以我将带你一步一步地创建这个函数,你应该能够找出你哪里出错了。你知道吗

我想你是想创造这个:

def function(a,b):
    """where a is a sentence and b is the target number. 
        The function will return to you each word in the 
        given sentence that occurs exactly b times."""

为此,我们必须做到以下几点:

  • 将句子转换为单词列表,并删除标点、大小写和空格。你知道吗
  • 重复句子中每个唯一的单词,如果它在句子中出现的次数正好b就打印出来
  • 把这些放在一起形成一个函数

所以在您的示例中,您的句子是“one one was a racemarse two two was one too”,并且您要查找正好出现3次的所有单词,因此函数应该返回单词“one”


我们一步一步地看。你知道吗

第一步- 我们必须把一个或多个句子转换成一个单词表。因为我不知道你是否会使用带有标点和/或大写的句子,我不得不假设这是可能的,并计划处理它们。我们将不得不从列表中省略任何标点符号/空格,如果每个单词中的所有字母恰好有大写字母,我们也将它们改为小写,因为即使“Cat”和“Cat”是同一个单词,根据计算机大脑,“Cat”并不等于以下任何一个:

  • “cat”-小写c与“cat”中的大写c不匹配
  • “Cat”-单词开头有一个额外的空格
  • “猫。”—这个词后面有一个句点
  • “Cat”-单词后有空格

因此,如果我们使用“一个一是赛马,两个二也是一”,作为我们的输入,我们需要处理空格、标点和大写。幸运的是,通过使用regular expressionlist comprehension清除所有垃圾并创建单词列表,所有这些工作都可以用两行代码完成。你知道吗

import re

wordlist=[i.lower() for i in re.findall(r"[\w']+",sentence)]

这是我们的词汇表:

['one', 'one', 'was', 'a', 'racehorse', 'two', 'two', 'was', 'one', 'too']

第二步- 现在我们需要遍历单词列表中每个唯一的单词,看看它是否精确地出现b次。由于我们只需要唯一的单词,我们可以创建一个只包含每个单词一次的列表,方法是将单词列表从列表转换为集合,循环遍历集合中的每个单词,并计算它们在单词列表中出现的次数。任何发生次数正好b的都是我们的解决方案。我不太清楚你是怎么想返回结果的,但我假设你想让符合条件的每个单词一次打印一个。你知道吗

for word in set(wordlist):
    if wordlist.count(word)==b:
        print word

第三步-

现在我将把所有这些放在一起创建我的函数:

 import re

 def repeat_word_count(a,b):
     wordlist=[i.lower() for i in re.findall(r"[\w']+",a)]
     for word in set(wordlist):
         if wordlist.count(word)==b:
             print word

我希望这能帮助你更好地理解

相关问题 更多 >