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
相关产品推荐
相关产品推荐

