【问题标题】:Printing list of words from dictionary打印字典中的单词列表
【发布时间】:2017-07-02 01:47:57
【问题描述】:

(抱歉问题太长了)

print_most_common() 函数,它传递两个参数,一个包含单词及其对应频率的字典,例如

{"fish":9,  "parrot":8,  "frog":9,  "cat":9,  "stork":1,  "dog":4, "bat":9,  "rat":3}

和,一个整数,所需的字符数。该函数获取所需字符数的所有单词的列表,这些单词是字典的键并且对于该长度的单词具有最高频率。该函数首先打印由单词长度(第二个参数)组成的字符串,后跟“字母关键字:”,然后打印所有具有最高频率的所需长度的单词(字典中的键)的列表由频率值。单词列表必须按字母顺序排序。

例如

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

【问题讨论】:

  • 似乎是一个家庭作业问题!请先提供您到目前为止尝试过的内容或您的代码示例。因此,如果直接获得答案,这里的人可以帮助您解决您遇到的问题。
  • def print_most_common(words_dict, word_len):keywords_list = [] for key, value in words_dict: if word_len == len(key): keywords_list += [word] else: 这就是我的到目前为止
  • @J_lll:编辑问题并添加您的代码,而不是将代码添加为注释。

标签: python dictionary


【解决方案1】:

这个怎么样。

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}

【讨论】:

    【解决方案2】:

    这至少适用于 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)
    

    如果您想进一步分解或解释,请告诉我。

    【讨论】:

    • 您可以通过检查words_dict中是否存在具有指定长度的单词来使其健壮。
    【解决方案3】:

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

    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]
      

    完整代码

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-03
      • 1970-01-01
      • 2020-05-13
      • 2015-10-03
      • 1970-01-01
      • 1970-01-01
      • 2017-07-18
      • 1970-01-01
      相关资源
      最近更新 更多