如何按嵌套字典内层集合值的总和对顶层字典进行排序
嵌套字典按内层集合总和排序实现方法
你可以直接通过提取内层字典的集合值计算总和作为排序key,实现方式如下:
你的字典结构特征为每个顶层键对应的子字典有且仅有1个键值对,值为待计算总和的集合,基于该特征可直接用如下代码实现:
实现代码
# 示例字典 dic = {"first_a" : { "first_b" : {10, 2} } , "second_a" : {"second_b" : {13, 15} } } # 升序排序,返回排序后的键值对列表 sorted_items = sorted(dic.items(), key=lambda item: sum(next(iter(item[1].values())))) # Python3.7及以上版本可直接转为排序后的有序字典 sorted_dict = dict(sorted_items) # 如需降序排序,添加reverse=True参数即可 sorted_dict_desc = dict(sorted(dic.items(), key=lambda item: sum(next(iter(item[1].values()))), reverse=True))
逻辑说明
lambda表达式的排序key计算逻辑:
item是dic.items()遍历得到的元组,item[0]为顶层键(如first_a),item[1]为顶层键对应的内层字典iter(item[1].values())获取内层字典所有值的迭代器,next()直接取第一个值,即待计算的集合sum()计算该集合的元素总和,作为排序的依据
内容的提问来源于stack exchange,提问作者Achille G
相关产品推荐
相关产品推荐

