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

Python中如何根据字典键值规则对列表(数组)进行自定义排序

Python按自定义字典权重排序列表实现

需求场景

给定课程名称列表,不按字母顺序排序,而是按照预定义的权重字典里对应值的从小到大顺序排列,最终得到指定顺序的结果。

核心实现逻辑

Python内置的sorted()函数支持传入key参数,自定义每个元素的排序比较依据,我们只需要让每个列表元素映射到权重字典中对应的权重值,即可自动按权重完成排序。

完整代码

# 原始待排序列表
x = ['Other', 'Physical Training', 'Math', 'English', 'Physics', 'Literature']
# 权重映射字典,值越小排序越靠前
y = {
    'Math': 0,
    'Physics': 1,
    'Chemistry': 2,
    'Biology': 3,
    'English': 4,
    'Literature': 5,
    'History': 6,
    'Physical Training': 7,
    'Other': 8
}

# 按权重排序
x_sorted = sorted(x, key=lambda course: y[course])

# 打印验证结果
print(x_sorted)

运行后输出结果完全匹配预期:

['Math', 'Physics', 'English', 'Literature', 'Physical Training', 'Other']

注意事项

  • 如果待排序列表中可能出现权重字典里不存在的元素,直接用y[item]会触发KeyError,可以改用y.get(item, 默认权重)的写法,比如lambda course: y.get(course, 99),就会把未收录的课程统一放到排序结果的末尾。
  • 如果需要降序排列,只需要给sorted()额外加参数reverse=True即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 03:15:47