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

Python中两个键名相似的字典如何追加numpy数组类型的值

问题分析与实现方案

原代码错误原因

  • 直接遍历Dic1获取键值对的写法错误:Python字典默认遍历返回键,需要调用.items()方法才能同时获取键和值
  • 用Dic1的键作为列表d2v的索引非法:列表仅支持整数下标索引,无法匹配字典的键类型
  • Numpy数组没有原生append方法:普通列表的append方法不适用于numpy数组,需要使用numpy官方的拼接函数
  • 未对齐两个字典的对应关系:两个字典键名不一致,无法通过键名匹配,需要按字典存储的顺序对齐取值(Python 3.7+ 字典默认保留插入顺序,符合对应位置匹配的需求)

可行实现思路

默认两个字典的键按插入顺序一一对应,根据你要保留的键的来源,有两种常用实现:

方案1:保留Dic1的键,将Dic2的对应值拼接到Dic1的值上

拼接轴可按需选择:原数组为200*100尺寸,axis=0代表纵向拼接(行数变为400,列数不变),axis=1代表横向拼接(列数变为200,行数不变)

import numpy as np

# 按顺序获取Dic2的所有值,和Dic1的键顺序一一对应
d2_values = list(Dic2.values())

# 遍历Dic1的键值对,按索引匹配Dic2的对应值拼接
for idx, (k, arr1) in enumerate(Dic1.items()):
    arr2 = d2_values[idx]
    Dic1[k] = np.concatenate([arr1, arr2], axis=0)

# 最终Dic1就是合并后的字典

方案2:保留Dic2的键,将Dic1的对应值拼接到Dic2的值上

import numpy as np

d1_values = list(Dic1.values())

for idx, (k, arr2) in enumerate(Dic2.items()):
    arr1 = d1_values[idx]
    Dic2[k] = np.concatenate([arr2, arr1], axis=0)

# 最终Dic2就是合并后的字典

如果你使用的Python版本低于3.7,字典不保留插入顺序,需要提前确认两个字典的键的对应排序规则,先对两个字典的键按统一规则排序后再取值拼接,避免对应错位。
如果你需要的是把两个数组存为列表而不是拼接成单个数组,可以把np.concatenate对应的行改成Dic1[k] = [arr1, arr2]即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 11:54:04