我正在尝试编写一个带有字符串 text 和正整数n的函数,并将文本转换为单词列表。它必须返回单词列表,并在文本中出现 n 或更多次。我正在尝试使用字典来完成此任务。
我想要的内容如下:
>>> repeat_word_count("buffalo buffalo buffalo buffalo", 2)
['buffalo']
>>> repeat_word_count("one one was a racehorse two two was one too", 3)
['one']
>>> repeat_word_count("how much wood could a wood chuck chuck", 1)
['a', 'chuck', 'could', 'how', 'much', 'wood']
我一直在使用字典来计算文本中每个单词出现的次数。这就是我到目前为止所做的:
def repeat_word_count(text, n):
my_string = text.split()
my_dict = {}
for word in my_string:
if word in my_dict:
my_dict[word] += 1
else:
my_dict[word] = 1
for key, value in my_dict.items():
if value >= n:
return sorted(my_dict.keys())
我知道第二个'for'循环不正确,但我不知道如何检查 my_dict 中的值是否大于或等于 n 。到目前为止,我的代码效果不佳。任何帮助都会很棒。
答案 0 :(得分:4)
使用以下内容替换最终的for循环:
return [key for key, value in my_dict.items() if value >= n]
您还可以根据需要进行排序:
result = [key for key, value in my_dict.items() if value >= n]
result.sort()
return result
答案 1 :(得分:2)
执行此操作的最佳方法是使用Counter
模块中的collections。
>>> from collections import Counter
>>> def repeat_word_count(text, n):
... return [key for key, value in Counter(text.split()).items() if value >= n]
...
>>> repeat_word_count("buffalo buffalo buffalo buffalo", 2)
['buffalo']
>>> repeat_word_count("one one was a racehorse two two was one too", 3)
['one']
>>> repeat_word_count("how much wood could a wood chuck chuck", 1)
['a', 'much', 'how', 'could', 'chuck', 'wood']
答案 2 :(得分:1)
仅适用于想要采用更简单方法的其他人:
def repeat_word_count(text, n):
my_string = text.split()
my_dict = {}
for word in my_string:
if word in my_dict:
my_dict[word] += 1
else:
my_dict[word] = 1
result = []
for key, value in my_dict.items():
if value >= n:
result.append(key)
return sorted(result)