Python如何按嵌套字典的内层指定值从大到小排序
嵌套字典按内层指定值降序排序实现方案
适用前提
Python 3.7及以上版本原生支持字典保留插入顺序,基础实现方案基于该版本特性编写,低版本兼容方案见文末。
示例原字典结构
origin_dict = {"Value1":{"OtherValue":0,"ValueINeed":50},"Value2":{"OtherValue":1,"ValueINeed":100}}
核心实现代码
# 按内层ValueINeed字段从大到小排序 sorted_dict = dict(sorted(origin_dict.items(), key=lambda item: item[1]["ValueINeed"], reverse=True))
参数说明
origin_dict.items():获取原字典所有键值对元组,结构为(外层键, 内层字典)key=lambda item: item[1]["ValueINeed"]:指定排序的取值规则,取内层字典中ValueINeed对应的值作为排序依据reverse=True:开启降序排序,若需要从小到大排序可删除该参数或设为False- 外层
dict():将排序完成的元组列表转换为保序字典
验证输出
print(sorted_dict) # 输出结果:{'Value2': {'OtherValue': 1, 'ValueINeed': 100}, 'Value1': {'OtherValue': 0, 'ValueINeed': 50}}
Python 3.6及更低版本兼容方案
低版本Python默认字典不保留插入顺序,需要使用collections.OrderedDict存储排序结果:
from collections import OrderedDict sorted_dict = OrderedDict(sorted(origin_dict.items(), key=lambda item: item[1]["ValueINeed"], reverse=True))
内容的提问来源于stack exchange,提问作者JackTYM
相关产品推荐
相关产品推荐

