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

如何对嵌套字典dict_dif中各区域数值进行升序排序

对嵌套字典中各区域数值列表排序并保留层级顺序

你的dict_dif结构是变量 -> 区域 -> 数值列表,需求是给每个区域下的60个数据点从小到大排序,同时保持变量和区域的原有顺序。你之前的代码错误地对「区域」进行了排序,而不是对区域内的数值列表排序。

正确实现代码(生成新字典)

sorted_dict = {
    var: {roi: sorted(data_list) for roi, data_list in regions.items()}
    for var, regions in dict_dif.items()
}

代码说明

  • 外层遍历每个变量及其对应的区域字典,保留变量的原有顺序(Python 3.7+ 字典默认维护插入顺序)
  • 内层遍历每个区域及其数值列表,用sorted()函数生成排序后的新列表,区域的顺序和原字典完全一致
  • 最终得到的sorted_dict结构和原字典完全相同,只是每个区域的数值列表被从小到大排序

原地修改原字典(不生成新字典)

如果不需要保留原字典的数值顺序,想直接修改原数据,可以用循环原地排序:

for regions in dict_dif.values():
    for roi, data_list in regions.items():
        data_list.sort()  # 原地排序,直接修改原列表内容

为什么你的原代码不对?

你之前的代码:

sorted_dict = {var : dict(sorted(roi.items(), key = lambda ele: ele[1]))
       for var, roi in dict_dif.items()}

这段代码的逻辑是对每个变量下的区域进行排序:sorted(roi.items(), key=lambda ele: ele[1])会把区域按其对应的列表来排序(Python中列表比较默认取第一个元素的值),这和你「排序区域内数值」的需求完全相反。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 09:57:17