首页 > 解决方案 > 尝试编写代码,该代码采用列表并返回单词长度/该长度单词频率的表

问题描述

嗨,我正在尝试编写带有列表并返回单词/频率长度表的代码,但我不确定该怎么做。

到目前为止,这是我的代码,但它不起作用。非常感谢有关如何重组/使其工作的任何帮助

def table_frequency(new_list):
word_frequency = {}
max_word = len(max(new_list, key=len))

for i in range(1, max_word+1):
    word_frequency[i] = 0

for word in new_list:
    if len(word) in word_frequency:
        word_frequency[len(word)] += 1
    else:
        word_frequency[len(word)] = 1

word_list = max(word_frequency.items(), key=(lambda x: x[0]))
print("\n Len  Freq")
for length, freq in word_list:
    print("{0:>4} {1:>4}".format(length, freq))

正确的表输出 任何帮助将不胜感激!

标签: python

解决方案


一切都是正确的,但你打印错了。

word_frequency正在存储您的单词长度和频率,因此您的最后一个 for 循环应该打印(不是word_list

for length, freq in word_frequency.items():
    print("{0:>4} {1:>4}".format(length, freq))

但是,如果您想使用word_list它自己,请使用word_list字典中的键值对

word_list=[[k,v] for k,v in word_frequency.items()]
print("\n Len  Freq")
for length, freq in word_list:
    print("{0:>4} {1:>4}".format(length, freq))

另请注意,您不需要此 for 循环:

for i in range(1, max_word+1):
    word_frequency[i] = 0

word_frequency[len(word)] = 1因为当您在下一个 for 循环中说时,您会自动将每个长度添加到字典中


推荐阅读