Python按嵌套字典值及嵌套长度排序输出的实现方法
嵌套字典多规则排序输出实现
待处理数据结构
定义的嵌套字典Mydict结构如下,外层键为颜色标识,值为嵌套字典,内层键为人名,对应数值为关联统计值:
Mydict = { 'Red': {'Pesho': 1250000, 'Chicho': 101}, 'Blue': {'Pesho': 10000, 'Gosho': 10000, 'Jecho': 260000}, 'White': {'Bobo': 10, 'Bebo': 10, 'Bibo': 100, 'Bubo': 10} }
实现需求
- 排序规则:优先按照条目关联的统计值大小降序排列,同数值场景下结合所属外层嵌套字典的长度匹配输出顺序
- 输出格式严格匹配给定示例,最终输出效果如下:
(Red) Pesho <-> 1250000 (Blue) Jecho <-> 260000 (Blue) Pesho <-> 10000 (Blue) Gosho <-> 10000 (Red) Chicho <-> 101 (White) Bibo <-> 100 (White) Bobo <-> 10 (White) Bebo <-> 10 (White) Bubo <-> 10
实现代码
梳理完成的可运行代码参考社区成熟交流方案实现,逻辑清晰可直接复用:
# 按嵌套字典的子项数量调整外层字典的顺序 sorted_Mydict = dict(sorted(Mydict.items(), key=lambda x: -len(x[1].values()))) # 生成包含颜色、人名、关联数值的三元组列表 pairs = [(color, name, power) for color, inner in sorted_Mydict.items() for name, power in inner.items()] # 按关联数值降序排序后,按要求格式打印结果 [print(f"({color}) {name} <-> {power}") for color, name, power in sorted(pairs, key=lambda x: -x[2])]
内容的提问来源于stack exchange,提问作者Alex P
相关产品推荐
相关产品推荐

