如何对Python字典按词频从高到低排序并保留键值对?
按词频降序排列字典并输出键值对列表
你之前的代码仅对字典的键进行了排序,所以输出只有单词序列。要得到包含单词和对应出现次数的排序列表,有两种简洁的实现方式:
方法一:直接对键值对排序
利用字典的items()方法获取所有键值对元组,结合sorted()指定排序依据为词频(元组的第二个元素):
word_dict = {'stack': 2, 'over': 1, 'flow': 3} # 得到元组列表,格式为[(单词, 次数), ...] sorted_tuples = sorted(word_dict.items(), key=lambda x: x[1], reverse=True) # 转换为你需要的列表嵌套列表格式 sorted_list = [list(item) for item in sorted_tuples] print(sorted_list) # 输出:[['flow', 3], ['stack', 2], ['over', 1]]
方法二:基于你原代码扩展
先通过你写的方式得到排序后的单词列表,再遍历组装成包含词频的子列表:
word_dict = {'stack': 2, 'over': 1, 'flow': 3} sorted_words = sorted(word_dict, key=word_dict.get, reverse=True) sorted_list = [[word, word_dict[word]] for word in sorted_words] print(sorted_list) # 输出:[['flow', 3], ['stack', 2], ['over', 1]]
两种方法都能实现需求,第一种更高效直接,无需额外遍历;第二种则是在你原有代码基础上的小修改,逻辑更易理解。
内容的提问来源于stack exchange,提问作者Worldy
相关产品推荐
相关产品推荐

