如何对值为自定义对象的Python字典按对象方法返回的字数排序?
实现方法
根据你的使用场景,可分为两种方案处理:
场景1:获得按字数升序排列的新字典
Python 3.7及以上版本原生字典支持保留插入顺序,直接用sorted处理键值对即可:
# 按word_count从小到大排序生成新字典 sorted_file_dict = dict(sorted( file_dict.items(), key=lambda item: item[1].get_word_count() ))
参数说明:
file_dict.items()返回所有(文件名, text_object实例)的键值对序列key参数指定排序依据,lambda表达式取每个键值对的第二个元素(即text_object实例),调用get_word_count()返回的整数值作为排序标准sorted默认升序排列,刚好符合从小到大的排序需求
如果使用的是3.7以下版本的Python,原生字典不保证顺序,可以用collections.OrderedDict存储排序结果:
from collections import OrderedDict sorted_file_dict = OrderedDict(sorted( file_dict.items(), key=lambda item: item[1].get_word_count() ))
场景2:仅需要获取字数最少的对象排查异常
不需要对全量数据排序,直接用min函数即可,性能更高:
# 直接获取字数最少的文件名称和对应实例 min_filename, min_text_obj = min( file_dict.items(), key=lambda item: item[1].get_word_count() ) # 输出最小字数验证 print(min_filename, min_text_obj.get_word_count())
内容的提问来源于stack exchange,提问作者Joshua Hedges
相关产品推荐
相关产品推荐

