单词的最大频率值

2024-05-21 06:15:19 发布

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

寻求家庭作业方面的帮助

给我一个列表,要求我查找列表中出现次数最多的值,并返回出现次数。这个问题是相当大的,我已经设法通过自己的其他部分,但这一个难倒了我。我应该补充说,这是一个任务,任何指导将不胜感激。你知道吗

问题陈述:最大(单词)频率

例如,在一本有以下单词['big', 'big', 'bat', 'bob', 'book']的书中,最大频率是2,即big是最常出现的单词,因此2是最大频率。你知道吗

def maximum_frequency(new_list):

    word_counter = {}

    for word in new_list:

        if word in word_counter:

            word_counter[word] += 1

        else:

            word_counter[word] = 1

我已经走了这么远,但我不确定从这里走到哪里是对的


Tags: in列表newcounter单词次数listword
3条回答

既然这听起来像是一种挑战和/或作业,你应该工作,而不是直接提供一个代码样本让我给你一些概念。你知道吗

首先,最好的方法是使用映射,在Python中,术语是“dict”,语法很简单{},您可以这样存储值:my_dict['value'] = true或者任何您需要的键/值。你知道吗

所以,如果你要一个接一个地读你的单词,并将它们存储到这个dict中,那么这个值应该是多少呢?你知道你想知道最大频率,对吧?好吧,让我们把它作为我们的价值。默认情况下,如果我们添加一个单词,我们应该确保将它的初始值设置为1(我们已经看到过一次)。如果我们第二次看到一个词,我们就会增加频率。你知道吗

现在你有了一个充满单词及其频率的dict,也许你能找出频率最大的单词?你知道吗

所以说,你应该关注的是:

  • 如何确定dict中是否存在键
  • 如何修改dict中键的值
  • 如何迭代dict的键/值对

在那之后,你的答案应该很容易找到。你知道吗

试试这个:

from collections import Counter

c = Counter(['big', 'big', 'bat', 'bob', 'book'])
max(c.items(), key=lambda x:x[1])

max将按其计数返回最大值,您可以执行以下操作:

key,rate = max(c.items(), key=lambda x:x[1])

key将是bigrate将是2。你知道吗

此外,您还可以访问按c.items()计数的所有项。输出将是

{'big': 2, 'bat': 1, 'bob': 1, 'book': 1}

编辑:

正如schwobasegll所说,从计数器中查找的最佳实践是使用most_common。你知道吗

c.most_common(1)[0]

您只需计算所有唯一元素的出现次数,并将频率与先前计算的频率进行比较。你知道吗

示例是单词列表。你知道吗

def maxfreq(sample):
    m=0
    frequency=0
    word=''
    set_sample=list(set(sample))
    for i in range(len(set_sample)):
        c=sample.count(set_sample[i])
        if c>m:
            m=c
            frequency=m
            word=set_sample[i]
    return (frequency,word)

相关问题 更多 >