Python如何基于深层嵌套键对嵌套字典组成的列表进行排序
Python 按嵌套字典值排序的实现方案
针对多层嵌套字典的列表排序需求,直接利用Python内置排序方法的自定义key参数即可实现,不需要额外依赖:
基础实现(数据无缺失场景)
sort()会直接修改原列表,sorted()会返回新的排序后列表,按需选择即可:
- 按
market_cap从小到大(升序)排序:
# 生成新的排序后列表 sorted_asc = sorted(ls, key=lambda item: item["quote"]["USD"]["market_cap"]) # 直接修改原列表排序 ls.sort(key=lambda item: item["quote"]["USD"]["market_cap"])
- 按
market_cap从大到小(降序,市值类场景常用)排序:
# 生成新的排序后列表 sorted_desc = sorted(ls, key=lambda item: item["quote"]["USD"]["market_cap"], reverse=True) # 直接修改原列表排序 ls.sort(key=lambda item: item["quote"]["USD"]["market_cap"], reverse=True)
兼容缺失字段的鲁棒实现
如果你的数据存在部分字典缺少quote/USD/market_cap任意层级字段的情况,可以用get方法设置默认值避免报错:
# 缺失市值的元素默认排在末尾,默认值可根据排序方向调整 sorted_safe = sorted(ls, key=lambda item: item.get("quote", {}).get("USD", {}).get("market_cap", float("inf")))
原理说明
该方案和一级键排序的逻辑完全一致,只是在key函数中把取值路径从一级键扩展到了多层嵌套的路径而已,支持任意深度的嵌套字典取值排序。
内容的提问来源于stack exchange,提问作者neisor
相关产品推荐
相关产品推荐

