gpt4 book ai didi

Python - 我的频率函数效率低下

转载 作者:行者123 更新时间:2023-11-30 22:54:54 24 4
gpt4 key购买 nike

我正在编写一个函数,它返回单词列表中出现次数最多的单词出现的次数。

def max_frequency(words):
"""Returns the number of times appeared of the word that
appeared the most in a list of words."""

words_set = set(words)
words_list = words
word_dict = {}

for i in words_set:
count = []
for j in words_list:
if i == j:
count.append(1)
word_dict[i] = len(count)

result_num = 0
for _, value in word_dict.items():
if value > result_num:
result_num = value
return result_num

例如:

words = ["Happy", "Happy", "Happy", "Duck", "Duck"]
answer = max_frequency(words)
print(answer)

3

但是当处理列表中的大量单词时,此函数会很慢,例如,250,000 个单词的列表此函数需要超过 4 分钟才能呈现输出。所以我正在寻求帮助来调整这个。

我不想导入任何东西。

最佳答案

为了防止对每个唯一单词多次遍历列表,您只需迭代一次并更新每个计数的字典值即可。

counts = {}
for word in words:
counts[word] = counts.get(word, 0) + 1

输出:

>>> print(max(counts.values()))
3
<小时/>

话虽如此,使用 defaultdict 而不是 get 或使用 collections.Counter 可以做得更好。 ...如果你有选择的话,限制自己在 Python 中不导入从来都不是一个好主意。

例如,使用collections.Counter:

from collections import Counter
counter = Counter(words)
most_common = counter.most_common(1)

关于Python - 我的频率函数效率低下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37629142/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com