打印字典

时间:2017-02-13 22:38:13

标签: python dictionary

(对不起,很长的问题)

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)函数?

3 个答案:

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

这是一个可能的解决方案:

  1. 获取所需长度的所有单词。

    filtered_words = {k: v for k, v in words_dict.items() if len(k) == word_len}
    
  2. 获取该长度的最大数量。

    max_count = max(filtered_words.values())
    
  3. 使用该计数过滤单词。

    [k for k, v in filtered_words.items() if v == max_count]
    
  4. 完整代码

    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