我试图写一个程序,它有两个功能:文本查找前5个字长
count_word_lengths这需要论证文本,文本字符串,并返回一个默认词典记录每个词长度的计数。一个例子调用此函数:
top5_lengths这需要相同的参数文本并返回前5字长的列表。
注意:在 两种长度具有相同的频率的情况下,就应该按降序排列。另外,如果长度少于5个字符,它应该返回一个较短的排序字长度列表。
实例调用count_word_lengths:
count_word_lengths("one one was a racehorse two two was one too"):
defaultdict(<class 'int'>, {1: 1, 3: 8, 9: 1})
实例调用top5_lengths:
top5_lengths("one one was a racehorse two two was one too")
[3, 9, 1]
top5_lengths("feather feather feather chicken feather")
[7]
top5_lengths("the swift green fox jumped over a cool cat")
[3, 5, 4, 6, 1]
我当前的代码是这样的,而且似乎输出所有这些电话,但它是失败的一个隐藏的测试。我没有考虑什么类型的输入?我的代码的行为是否正确?如果没有,我该如何解决这个问题?
from collections import defaultdict
length_tally = defaultdict(int)
final_list = []
def count_word_lengths(text):
words = text.split(' ')
for word in words:
length_tally[len(word)] += 1
return length_tally
def top5_word_lengths(text):
frequencies = count_word_lengths(text)
list_of_frequencies = frequencies.items()
flipped = [(t[1], t[0]) for t in list_of_frequencies]
sorted_flipped = sorted(flipped)
reversed_sorted_flipped = sorted_flipped[::-1]
for item in reversed_sorted_flipped:
final_list.append(item[1])
return final_list