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

Python遍历嵌套字典生成指定结构列表时数据被覆盖如何解决

问题解决方法

核心问题原因

  • 没有初始化空列表存储每次生成的指标数据,所有赋值都复用同一个metrics字典,循环时会持续覆盖之前的内容,最终只能得到最后一次循环的结果
  • fields字段构造逻辑错误,没有按照预期取列表的第一个元素为key、第二个为value,而是直接传入了完整列表

修正后代码

d = {'a1': {'b': ['x', 1]}, 'a2': {'b1': ['x1', 2]}}
# 初始化空列表存储所有结果
result = []
for k, v in d.items():
    # 每次循环新建一个metrics字典,避免覆盖
    metrics = {}
    metrics['measurements'] = "XXXXX"
    metrics['time'] = "timexxxxx"
    if isinstance(v, dict):
        for j, h in v.items():
            metrics['tags'] = {'MPC': j, 'host': k}
            # 取列表第一个元素为key,第二个为value构造fields
            metrics['fields'] = {h[0]: h[1]}
    # 把当前构造完成的metrics加入结果列表
    result.append(metrics)

输出结果

运行上述代码后得到的result符合预期结构:

[
    {
        "measurements": "XXXXX",
        "tags": {
            "MPC": "b",
            "host": "a1"
        },
        "time": "timexxxxx",
        "fields": {
            "x": 1
        }
    },
    {
        "measurements": "XXXXX",
        "tags": {
            "MPC": "b1",
            "host": "a2"
        },
        "time": "timexxxxx",
        "fields": {
            "x1": 2
        }
    }
]

注:你给出的预期输出示例中第二条记录的MPC、fields值存在笔误,按照输入字典的结构,修正后的代码输出是符合实际数据对应关系的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 05:57:04