Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在列表中重复单词_Python_List_Function - Fatal编程技术网

Python 在列表中重复单词

Python 在列表中重复单词,python,list,function,Python,List,Function,如何在列表中返回重复的单词 我被要求创建一个函数,word\u count(text,n)。文本转换为列表,然后返回重复n次的单词。我试着写它,但它似乎返回了每一个字 >>> repeat_word_count("one one was a racehorse two two was one too", 3) ['one'] 我已经使用了for循环并对其进行了调节。我想发布我的代码,但我担心我的学校会在网上找到代码:(我想我知道你想做什么,在没有看到你的代码的情况下,我无法准

如何在列表中返回重复的单词

我被要求创建一个函数,
word\u count(text,n)
。文本转换为列表,然后返回重复n次的单词。我试着写它,但它似乎返回了每一个字

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

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

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

我认为您正在尝试创建以下内容:

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,则将其打印出来
  • 把这些放在一起形成一个函数
因此,在您的示例中,您的句子是“一个一个是赛马,两个二个也是一个”,您要查找所有恰好出现3次的单词,因此函数应该返回单词“一”


我们将逐一查看每个步骤

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

  • “cat”-小写c与“cat”中的大写c不匹配
  • “Cat”-单词开头有一个额外的空格
  • “猫。”——单词后有一个句号
  • “Cat”-单词后有空格
因此,如果我们使用“一个一个是赛马,两个二个也是一。”作为我们的输入,我们需要处理空格、标点符号和大写字母。幸运的是,所有这些工作都可以用两行代码来完成,使用a和来清除所有垃圾并创建一个单词列表

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

我希望这有助于你更好地理解

展示你的尝试和示例输入你的输出和预期输出你的学校一定给了你课程材料。你不明白哪一部分?你有导师吗?如果没有人帮助你,在线寻求帮助是公平的。所以开始做家庭作业……只是一个线索,创建一个案例不敏感字典,将文本拆分为单词并添加到该字典。如果您已经知道如何将文本拆分为单词列表,请查看,您几乎完成了。