尝试编写带有列表并返回单词长度/单词频率的表的代码,该长度为

时间:2018-10-21 03:38:27

标签: python

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

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

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))

correct table output 任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

一切都正确,但是您正在打印错误的东西。

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

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