如何按weekday(星期)类型的key对object对象按周一至周日顺序排序
按周一到周日顺序重排weekOverview对象的实现方案
前置说明
ES6+ 版本的JavaScript、Python 3.7+ 及更高版本都支持保留对象/字典的键插入顺序,我们可以通过预先定义目标顺序,按顺序重建键值对实现需求,这种方案比动态排序更稳定,不会受系统地区星期排序规则影响。
JavaScript 实现代码
// 1. 预定义目标星期顺序 const targetWeekOrder = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'] // 2. 原始数据 const originData = { "weekOverview": { "Sunday": 0.1111111111112, "Monday": 0.1111111111111, "Tuesday": 0.1100204936741015, "Wednesday": 0.8655145400508841, "Thursday": 0.2206230378805767, "Friday": 0.7633485206232166, "Saturday": 1.6047637274510986 } } // 3. 按顺序重建weekOverview对象 const sortedWeekOverview = {} targetWeekOrder.forEach(day => { sortedWeekOverview[day] = originData.weekOverview[day] }) // 4. 替换原数据的weekOverview字段得到最终结果 const result = { ...originData, weekOverview: sortedWeekOverview }
Python 处理JSON实现代码
import json # 预定义目标星期顺序 target_week_order = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'] # 原始JSON字符串(注意补全原示例中缺失的逗号避免格式错误) raw_json = ''' { "weekOverview": { "Sunday": 0.1111111111112, "Monday": 0.1111111111111, "Tuesday": 0.1100204936741015, "Wednesday": 0.8655145400508841, "Thursday": 0.2206230378805767, "Friday": 0.7633485206232166, "Saturday": 1.6047637274510986 } } ''' # 加载JSON并按顺序重建weekOverview data = json.loads(raw_json) sorted_week_overview = {day: data['weekOverview'][day] for day in target_week_order} data['weekOverview'] = sorted_week_overview # 输出格式化后的JSON print(json.dumps(data, indent=2, ensure_ascii=False))
格式注意事项
你提供的预期输出示例中Saturday对应的行末尾缺失逗号,实际输出时需要补全避免JSON语法错误。
内容的提问来源于stack exchange,提问作者Wolf
相关产品推荐
相关产品推荐

