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

Python:将嵌套字典CAN1的值替换至CAN0指定位置

问题:批量将CAN1字典中的信号值更新到CAN0

原始数据结构

首先需要修正原始代码的语法错误(信号值需用列表[]包裹,键值对末尾添加逗号),正确结构如下:

CAN0 = {
    "signal11": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
    "signal12": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
    "signal21": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
    "signal22": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
    "signal31": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
    "signal32": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
}

CAN1 = {
  "message1": {
    "signal11": [32,41,53,62,77],
    "signal12": [54,67,24,33,78]
  },
  "message2": {
    "signal21": [55,53,63,62,77],
    "signal22": [34,65,94,97,24]
  },
  "message3": {
    "signal31": [13,14,53,42,63],
    "signal32": [34,56,26,97,84]
  }
}

期望更新后的CAN0结构

CAN0 = {
    "signal11": [0,0,0,32,41,53,62,77,0,0,0,0,0,0,0,0,0],
    "signal12": [0,0,0,54,67,24,33,78,0,0,0,0,0,0,0,0,0],
    "signal21": [0,0,0,55,53,63,62,77,0,0,0,0,0,0,0,0,0],
    "signal22": [0,0,0,34,65,94,97,24,0,0,0,0,0,0,0,0,0],
    "signal31": [0,0,0,13,14,53,42,63,0,0,0,0,0,0,0,0,0],
    "signal32": [0,0,0,34,56,26,97,84,0,0,0,0,0,0,0,0,0]
}

错误尝试及报错

尝试以下代码时触发报错:'int' object is not subscriptable

for message in CAN1:
    for signal in CAN1[message]
        for i in range (3,7)    
            CAN0[str(signal)][i] = CAN1[message][signal][i]     

问题根源

  1. 语法错误:原始字典中信号值未用列表包裹,Python会将逗号分隔的数字解析为多个参数,导致字典值实际为单个整数(甚至触发语法报错),无法通过下标访问。
  2. 索引不匹配:range(3,7)仅覆盖4个位置,但CAN1中每个信号有5个值,无法完全对应目标位置。
  3. 循环语法缺失:for循环末尾未添加冒号:,属于基础语法错误。

解决方案代码

# 遍历CAN1中所有消息的内容
for message_content in CAN1.values():
    # 遍历当前消息内的所有信号键值对
    for signal_name, signal_values in message_content.items():
        # 从CAN0的索引3开始,逐个替换为CAN1的信号值
        for idx, val in enumerate(signal_values):
            CAN0[signal_name][3 + idx] = val

代码说明

  • 先修正原始字典的语法,将信号值改为列表类型,确保可以通过下标修改元素。
  • 使用CAN1.values()直接获取消息内容,简化遍历逻辑。
  • 借助enumerate同时获取CAN1信号值的索引和数值,精准对应CAN0中从索引3开始的5个位置,保证批量更新的准确性。
  • 补全循环所需的冒号,避免语法错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 02:18:03