【发布时间】:2016-10-10 08:44:30
【问题描述】:
该函数打印关键字长度,然后打印所有所需长度的字典关键字的排序列表,这些关键字具有最高频率,其次是频率。例如以下代码:
word_frequencies = {"and":15, "whale":7, "frog":7, "cat":15, "fish":1, "dog":2, "pig":15, "stork":1, "rat":15, "bird":7}
print_most_frequent(word_frequencies, 3)
print_most_frequent(word_frequencies, 4)
print_most_frequent(word_frequencies, 5)
打印出来:
3 letter keywords: ['and', 'cat', 'pig', 'rat'] 15
4 letter keywords: ['bird', 'frog'] 7
5 letter keywords: ['whale'] 7
这是我目前的尝试:
def print_most_frequent(words_dict, word_len):
keyword_length = []
frequency = 0
for key in words_dict:
if len(key) == word_len and words_dict[key] >= frequency:
keyword_length += [key]
if frequency != words_dict[key]:
frequency += words_dict[key]
print (str(word_len) + " letter keywords: " + str(keyword_length) + " " + str(frequency))
但这给了我:
3 letter keywords: ['dog', 'cat'] 17
4 letter keywords: ['frog', 'bird'] 15
5 letter keywords: ['whale'] 7
谁能指出我正确的方向,让我知道该怎么做。
我需要按字母顺序对字典进行排序,结果如下:
['and', 'cat', 'pig', 'rat']
而不是随机化它。
【问题讨论】:
-
经验法则:如果变量实际上不包含任何长度(我希望它是一个数字),则不要用“长度”调用任何变量
-
最后的数字是什么意思?起初我以为这是单词的最大值,但在你的第二个例子中
bird的值为8,但最后的数字是7 -
对不起,我的意思是放 7
标签: python-3.x sorting dictionary