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

如何将dict嵌套dict转换为dict嵌套list?含关联排序需求

解决嵌套字典的关联排序问题

没问题,我来帮你搞定这个需求!核心思路是先把对应索引的name和age配对,这样排序的时候就能保证两者的关联关系不被打乱,之后再拆分重组就能得到目标格式。

具体步骤和代码示例:

首先,我们先明确原始数据:

original_dict = {'name': {0: 'name1', 1: 'name2'}, 'age': {0: 'age1', 1: 'age2'}}
  1. 配对关联数据:把每个索引对应的name和age组合成元组,形成一个配对列表,这样排序时两者会绑定在一起:
# 获取所有索引(这里name和age的索引是一一对应的,取任意一个的keys即可)
indices = original_dict['name'].keys()
# 生成配对列表:[(name1, age1), (name2, age2)]
paired_data = [(original_dict['name'][idx], original_dict['age'][idx]) for idx in indices]
  1. 按age进行关联排序:使用sorted()函数,指定排序依据为元组中的第二个元素(也就是age),如果需要倒序(像你例子里的结果那样),加上reverse=True:
# 按age倒序排序,如果你需要升序就去掉reverse=True
sorted_paired = sorted(paired_data, key=lambda x: x[1], reverse=True)
  1. 拆分重组为目标字典:把排序后的配对列表拆分成name列表和age列表,再组合成新字典:
sorted_names = [item[0] for item in sorted_paired]
sorted_ages = [item[1] for item in sorted_paired]
result_dict = {'name': sorted_names, 'age': sorted_ages}

完整运行代码:

original_dict = {'name': {0: 'name1', 1: 'name2'}, 'age': {0: 'age1', 1: 'age2'}}

# 配对数据
indices = original_dict['name'].keys()
paired_data = [(original_dict['name'][idx], original_dict['age'][idx]) for idx in indices]

# 按age倒序排序
sorted_paired = sorted(paired_data, key=lambda x: x[1], reverse=True)

# 重组字典
result_dict = {
    'name': [item[0] for item in sorted_paired],
    'age': [item[1] for item in sorted_paired]
}

print(result_dict)
# 输出:{'name': ['name2', 'name1'], 'age': ['age2', 'age1']}

补充说明:

  • 如果你的age是数字类型(比如{0: 25, 1: 30}),排序逻辑完全通用,不需要修改;
  • 如果原始数据的内层字典索引不连续或者不匹配,建议先检查数据一致性,确保每个name都有对应的age;
  • 如果需要按name排序,只需要把sorted()的key改成lambda x: x[0]即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:16:43