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

如何将指定结构的Python字典转换为目标格式的嵌套列表?

字典结构转嵌套列表实现

原代码错误点

  • 重复使用同一个node_dict对象:你在遍历y的循环外仅初始化了一次node_dict,所有插入nodes_list的都是该对象的引用,最终所有节点的值都会被最后一次赋值覆盖
  • 遍历逻辑不符合数据结构:原字典每个value列表的元素是「节点ID+节点坐标」两两配对的结构,你每遍历一个元素就插入一次nodes_list,会导致节点列表长度翻倍,且前半部分节点只有ID无坐标,后半部分节点ID错误

正确实现代码

mem_list = []
# 遍历原列表中的每个字典元素
for item in list_temp:
    # 遍历字典的每个键值对,键是外层ID,值是节点配对列表
    for outer_id, node_pairs in item.items():
        nodes_list = []
        # 步长为2遍历节点配对列表,每次取一个ID和对应坐标
        for i in range(0, len(node_pairs), 2):
            node_id = node_pairs[i]
            node_pos = node_pairs[i+1]
            nodes_list.append({
                "Id": node_id,
                "Position": node_pos
            })
        mem_list.append({
            "Id": outer_id,
            "Nodes": nodes_list
        })

如果你的原数据是单个字典(没有嵌套在列表中),只需删除外层遍历list_temp的循环,直接遍历字典的键值对即可。

效果验证

输入原数据为:

list_temp = [{
    1: [1,{'X': -0.48595, 'Y': 0.0, 'Z': 0.56283},
         2,{'X': -0.48595, 'Y': 0.0, 'Z': -0.6}],
    2: [2,{'X': -0.48595, 'Y': 0.0, 'Z': -0.6},
         4,{'X': 1.14756, 'Y': 0.0, 'Z': -0.6}],
    3: [4,{'X': 1.14756, 'Y': 0.0, 'Z': -0.6},
         9,{'X': 1.14756, 'Y': 0.0, 'Z': 0.8}]
}]

运行上述代码后得到的mem_list完全匹配你需要的目标结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 05:09:03