Python中如何按周一至周日顺序排序列表的列表?
按周一至周日顺序排序温度列表的解决方案
给定无序的星期温度列表:
weekly_temperature = [['Saturday', 100], ['Wednesday', 95], ['Friday', 80], ['Monday', 95], ['Sunday', 90], ['Tuesday', 100], ['Thursday', 85]]
需要将其按周一至周日的顺序排序,得到目标结果:
[['Monday', 95], ['Tuesday', 100], ['Wednesday', 95], ['Thursday', 85], ['Friday', 80], ['Saturday', 100], ['Sunday', 90]]
实现方法
核心思路是为星期几定义固定的优先级映射,用映射值作为排序依据:
定义星期顺序映射
创建字典,将每个星期名称映射到对应顺序索引(周一为0,周日为6):week_order = { 'Monday': 0, 'Tuesday': 1, 'Wednesday': 2, 'Thursday': 3, 'Friday': 4, 'Saturday': 5, 'Sunday': 6 }使用
sorted()函数排序
利用Python内置sorted()函数,通过key参数指定排序规则——提取每个子列表的星期名称,映射到week_order中的索引值:sorted_temps = sorted(weekly_temperature, key=lambda x: week_order[x[0]])验证结果
打印sorted_temps即可得到符合要求的排序结果。
补充说明
- 字典映射的查找效率为O(1),比列表
index()方法(O(n))更高效,适合数据量较大的场景。 - 如果需要直接修改原列表而非生成新列表,可使用列表的
sort()方法:weekly_temperature.sort(key=lambda x: week_order[x[0]])
内容的提问来源于stack exchange,提问作者Jonathan Cho
相关产品推荐
相关产品推荐

