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

Python更新UAV_dict值时所有车辆数据存入每个键的问题咨询

问题原因与修复方案

根本原因

  • 第一个问题:公共键模板的列表引用重复
    你预先定义的keys字典里的所有空列表都是唯一的内存对象,调用update方法时,每个车辆字典的time/aspd等字段都会指向同一个列表实例。任意一个列表新增数据,所有车辆字典的对应字段都会同步更新,本质上所有车辆共享同一组数据容器。
  • 第二个问题:最终循环的变量名误用
    你最后遍历车辆的循环迭代变量是a_key,但循环内部读写数据时全用了上一层循环遗留的变量key,这个变量在遍历完所有UAV_dict键后,固定指向最后一个键veh_5,导致所有车辆的数据都被写入同一个位置,再结合前一个引用问题,就出现了所有数据累加的情况。

修复后的代码

可以直接省略冗余的车辆字典初始化步骤,一步生成每个车辆的独立数据容器,同时修正循环变量名即可:

UAV_dict = {}
# 直接生成每个车辆的独立字典,不存在共用引用问题
for i in range(1, 6):
    UAV_dict[f"veh_{i}"] = {
        'time': [], 'aspd': [], 'gspd': [], 'hdg': [], 
        'alt': [], 'time2': [], 'lat': [], 'lon': []
    }

# 遍历写入数据,统一使用迭代变量a_key
for a_key in UAV_dict.keys():
    for data in hud_data.get(a_key):
        UAV_dict[a_key]['time'].append(data[0])
        UAV_dict[a_key]['aspd'].append(data[1])
        UAV_dict[a_key]['gspd'].append(data[2])
        UAV_dict[a_key]['hdg'].append(data[3])
        UAV_dict[a_key]['alt'].append(data[4])
    for data in ahrs2_data.get(a_key):
        UAV_dict[a_key]['time2'].append(data[0])
        UAV_dict[a_key]['lat'].append(data[1])
        UAV_dict[a_key]['lon'].append(data[2])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 07:15:04