嗨,我正在尝试编写包含列表并返回单词/频率长度表的代码,但我不确定该怎么做。
到目前为止,这是我的代码,但是没有用。 非常感谢任何有关如何对其进行重组/使其工作的帮助
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 任何帮助将不胜感激!
答案 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
时,您会自动将每个长度添加到字典中