(对不起,很长的问题)
print_most_common()函数传递两个参数,一个包含单词及其相应频率的字典,例如。
{"fish":9, "parrot":8, "frog":9, "cat":9, "stork":1, "dog":4, "bat":9, "rat":3}
和整数,所需的字符数。该函数获得所需字符数的所有字的列表,这些字是字典的键,并且具有该长度的字的最高频率。该函数首先打印由字长(第二个参数)组成的字符串,然后是"字母关键字:"然后打印所有长度(字典中的键)的所有单词的列表,其中频率值最高,后跟频率值。单词列表必须按字母顺序排序。
e.g。
word_frequencies = {"fish":9, "parrot":8, "frog":9, "cat":9,
"stork":1, "dog":4, "bat":9, "rat":3}
print_most_common(word_frequencies, 3)
print_most_common(word_frequencies, 4)
print_most_common(word_frequencies, 5)
将打印:
3 letter keywords: ['bat', 'cat'] 9
4 letter keywords: ['fish', 'frog'] 9
5 letter keywords: ['stork'] 1
我如何定义print_most_common(words_dict,word_len)函数?
答案 0 :(得分:0)
怎么样。
freq_dict = {k: v for k, v in word_frequencies.items() if len(k) == word_len}
例如:
>> freq_dict = {k: v for k, v in word_frequencies.items() if len(k) == 3}
>> print(freq_dict)
>> {'bat': 9, 'cat': 9, 'dog': 4, 'rat': 3}
答案 1 :(得分:0)
这应该至少适用于Python 2实现,更新到3应该不难。
Asav提供了一种使用word_len及其相应频率来获取字典的方法。然后,您可以从频率中检索最大值,从而检索具有该频率的单词列表。
def print_most_common(words_dict, word_len):
wl_dict = {k: v for k, v in words_dict.items() if len(k) == word_len}
max_value = wl_dict[max(wl_dict, key=wl_dict.get)]
res_list = [key for key,val in wl_dict.items() if val == max_value]
print '%d letter keywords %s %d' % (word_len, res_list, max_value)
如果您想进一步分解或解释,请告诉我。
答案 2 :(得分:0)
这是一个可能的解决方案:
获取所需长度的所有单词。
filtered_words = {k: v for k, v in words_dict.items() if len(k) == word_len}
获取该长度的最大数量。
max_count = max(filtered_words.values())
使用该计数过滤单词。
[k for k, v in filtered_words.items() if v == max_count]
def print_most_common(words_dict, word_len):
filtered_words = {k: v for k, v in words_dict.items() if len(k) == word_len}
max_count = max(filtered_words.values())
print word_len, 'letter keywords:', [k for k, v in filtered_words.items() if v == max_count], max_count