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

如何按指定值序列对字典列表的指定key排序,要求不使用循环

Python 按指定列表顺序对字典列表排序方案

前置准备

你提供的原始数据如下:

list_dict = [{'a': 'car', 'b': 4}, {'a': 'train', 'b': 10}, {'a': 'flight', 'b': 6}, {'a': 'bike', 'b': 2}]
a_list = ["flight", "bike", "train", "car"]

实现方案

无需手动编写循环,直接调用Python内置的sorted函数,通过指定排序key即可实现需求:

小数据量最简方案

res = sorted(list_dict, key=lambda x: a_list.index(x['a']))

大数据量优化方案

如果数据量较大,推荐提前构建索引映射字典,将排序时的查找复杂度从O(n)降低到O(1),效率更高:

# 提前构建值到对应索引的映射关系
order_map = {val: idx for idx, val in enumerate(a_list)}
res = sorted(list_dict, key=lambda x: order_map[x['a']])

输出结果

打印res即可得到你需要的结果:

print(res)
# 输出:[{'a': 'flight', 'b': 6}, {'a': 'bike', 'b': 2}, {'a': 'train', 'b': 10}, {'a': 'car', 'b': 4}]

异常场景兼容说明

如果字典中a字段的取值可能存在不在a_list范围内的情况,可以在key中添加默认值避免报错,示例如下(不在指定顺序里的元素会默认排在最后):

res = sorted(list_dict, key=lambda x: order_map.get(x['a'], float('inf')))

内容的提问来源于stack exchange,提问作者Soumee Giri

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 11:54:00