You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python按自定义顺序对字典列表进行排序?

按自定义顺序对字典列表排序

没问题,你的思路方向完全正确——我们确实可以借助sorted()的key参数,结合自定义的顺序映射来实现这个需求。具体做法很简单,分两步走:

  1. 定义自定义顺序的映射关系
    首先把想要的排序顺序写成一个列表,再把每个day对应到它在列表里的索引位置(索引越小,排序越靠前)。用字典做这个映射会让查找效率更高:
# 自定义的日期排序顺序
day_order = ["sun", "mon", "tue", "wed", "thu", "fri", "sat"]
# 生成日期到排序优先级的映射字典
day_rank = {day: idx for idx, day in enumerate(day_order)}
  1. 用lambda作为key参数完成排序
    在sorted()里,用lambda函数提取每个字典的day值,再通过day_rank拿到它对应的优先级序号,sorted()就会按照这个序号来排序了:
alist = [ {"id":"A","day":"sun"}, {"id":"B","day":"tue"}, {"id":"C","day":"mon"} ]
sortedalist = sorted(alist, key=lambda x: day_rank[x["day"]])
print(sortedalist)

运行这段代码就能得到你想要的结果:

[ {"id":"A","day":"sun"}, {"id":"C","day":"mon"}, {"id":"B","day":"tue"} ]

额外小提示

如果你的列表里可能存在不在自定义顺序里的day值,为了避免抛出KeyError,可以用dict.get()方法给这些“例外值”设置默认优先级(比如直接放到列表最后):

sortedalist = sorted(alist, key=lambda x: day_rank.get(x["day"], len(day_order)))

内容的提问来源于stack exchange,提问作者Smelly Potato

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:20:21