我是一个大学生谁是新来的,喜欢编程。我在实践中遇到了一个问题,我想在这里寻求帮助。在
给一个字符串一个整数n,返回第n个最常见的单词和它的count,忽略大小写。在
确保所有的字母都是小写的!在
提示:split()函数和字典可能有用。在
示例:
输入:“apple apple apple blue call”,2
输出:列表[“蓝色”,2]
我的代码如下:
from collections import Counter
def nth_most(str_in, n):
split_it = str_in.split(" ")
array = []
for word, count in Counter(split_it).most_common(n):
list = [word, count]
array.append(count)
array.sort()
if len(array) - n <= len(array) - 1:
c = array[len(array) - n]
return [word, c]
试验结果如下:
^{pr2}$以及
Traceback (most recent call last):
File "/grade/run/test.py", line 20, in test_negative
self.assertEqual(nth_most('awe Awe AWE BLUE BLUE call', 1), ['awe', 3])
AssertionError: Lists differ: ['BLUE', 2] != ['awe', 3]
First differing element 0:
'BLUE'
'awe'
我不知道我的代码有什么问题。在
非常感谢你的帮助!在
输出:
^{pr2}$既然您使用的是
Counter
,请明智地使用它:建立词频字典,根据值(元组的第二个元素)对项目进行排序,并选择最后第n个元素。在
这将打印
['blue', 2]
。在如果在第一位或第二位有两个频率相同的单词(并列)怎么办?这个解决方案行不通。相反,对出现的次数进行排序,提取第n个最常见的出现,然后再次运行counter dict来提取匹配项。在
^{pr2}$这次打印:
计数器按顺序返回大多数公用元素,以便您可以执行以下操作:
相关问题 更多 >
编程相关推荐