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

如何编程根据字典键名调整键值对位置使同参数键相邻排列

字典重排通用方案

实现前提

Python 3.7+版本原生字典默认保留键值对插入顺序,排序后生成的新字典可以直接按固定顺序导出CSV;如果使用更低版本Python,把代码里的dict()替换为collections.OrderedDict()即可,排序逻辑完全通用。

排序规则

排序按两个优先级依次判断:

  • 第一优先级:提取每个键的参数基础名(即去掉末尾固定后缀_actual/_pred后的部分),同一基础名的键归为相邻组
  • 第二优先级:同组内固定_actual后缀的键排在_pred前,保证同参数的两个键顺序符合预期
  • 若存在不带这两个固定后缀的键,统一排在所有参数对之后,不会干扰目标顺序

可直接复用的代码

origin_dict = {"par1_actual": 100, "par2_actual": 150, "par1_pred": 120, "par2_pred": 140}

def dict_sort_key(item):
    key, _ = item
    if key.endswith("_actual"):
        # 匹配actual后缀,同组内优先级最高
        return (key[:-len("_actual")], 0)
    elif key.endswith("_pred"):
        # 匹配pred后缀,同组内优先级次位
        return (key[:-len("_pred")], 1)
    else:
        # 非目标后缀的键优先级最低,排在最后
        return (key, 2)

sorted_dict = dict(sorted(origin_dict.items(), key=dict_sort_key))
print(sorted_dict)
# 输出结果:{'par1_actual': 100, 'par1_pred': 120, 'par2_actual': 150, 'par2_pred': 140}

适配说明

  • 不受参数名称影响:不管参数名是par1、speed还是train_loss这类本身带下划线的名称,只要后缀固定为_actual/_pred就能正确分组
  • 不受参数数量影响:参数增删不需要修改排序逻辑

CSV导出提示

导出CSV时直接按sorted_dict的顺序取键做表头、取值做行数据即可,不需要额外调整顺序。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 11:48:53