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

如何将Python字典(dict)的值批量替换为对应数组(array)元素?

如何将字典中的值替换为数组中对应元素?

看起来你需要把字典里的每个值(那些二维numpy数组)替换成另一个大数组里对应位置的元素,而且两者的元素数量刚好匹配(都是16个)。这里给你两种简单的实现方式,基于Python和numpy:

前提说明

首先要确认:你的Python版本是3.7及以上(因为3.7+的字典是插入有序的),这样原字典的键顺序和目标数组的元素顺序是一一对应的,和你给出的示例完全匹配。如果是更早的Python版本,你需要提前把字典的键按顺序存到一个列表里,确保和目标数组的索引对应。

代码实现

首先先定义好你的原字典和目标数组(这里用numpy):

import numpy as np

# 原字典
original_dict = {
    '10.0.1.1': np.array([0.44739793, 0.45896071]),
    '10.0.1.11': np.array([0.0651452 , 0.79400788]),
    '10.0.1.17': np.array([-0.30955505, -0.68114728]),
    '10.0.1.18': np.array([-0.86424049, 0.36407693]),
    '10.0.1.2': np.array([ 0.53028569, -0.34903309]),
    '10.0.1.22': np.array([ 0.82654681, -0.12412811]),
    '10.0.1.23': np.array([-0.34425123, 0.1718602 ]),
    '10.0.1.25': np.array([-0.96558349, -0.56542351]),
    '10.0.1.26': np.array([-0.65562853, 0.03249861]),
    '10.0.1.5': np.array([ 0.29772161, -0.32568994]),
    '10.0.1.6': np.array([-0.09182783, 0.60688289]),
    '10.0.1.9': np.array([ 1. , -0.25280971]),
    '10.0.11.100': np.array([0.25305214, 0.15893858]),
    '10.0.12.100': np.array([0.73537509, 0.38210647]),
    '10.0.13.100': np.array([-0.79243841, -0.32855154]),
    '10.0.14.100': np.array([-0.13199944, -0.34254908])
}

# 目标数组
target_array = np.array([
    [-0. , 0. , 0. , -0.92999877, 2. ],
    [ 0.72697727, -1.00416248, -0.06716753, -0.16522289, -0. ],
    [ 0.14544414, -0.04370471, 0.74557808, 0.70755899, -0. ],
    [ 0.14544414, -0.04370471, 0.74557808, 0.70755899, -0. ],
    [-0.14544414, 0.04370471, -0.74557808, 0.70755899, -0. ],
    [-0.14544414, 0.04370471, -0.74557808, 0.70755899, 0. ],
    [-0. , -0. , 0. , -0.4311162 , -0. ],
    [ 0.14544414, -0.04370471, 0.74557808, 0.70755899, 0. ],
    [ 0. , -0. , 0. , -0.4311162 , -0. ],
    [-0.14544414, 0.04370471, -0.74557808, 0.70755899, -0. ],
    [-0. , 0. , 0. , -0.92999877, -2. ],
    [ 1.18660948, 0.99293878, -0.57256311, -0.16522289, -0. ],
    [-0. , -0. , 0. , -0.4311162 , -0. ],
    [-1.18660948, -0.99293878, 0.57256311, -0.16522289, -0. ],
    [-0.72697727, 1.00416248, 0.06716753, -0.16522289, -0. ],
    [-0. , 0. , -0. , -0.4311162 , 0. ]
])

方法1:用字典推导式(简洁高效)

一行代码就能生成你要的新字典:

new_dict = {key: target_array[idx] for idx, key in enumerate(original_dict.keys())}

方法2:循环遍历替换(直观,适合加额外逻辑)

如果你需要在替换过程中做一些额外处理(比如检查元素格式),可以用循环的方式:

# 先复制原字典,避免修改原始数据
new_dict = original_dict.copy()
for idx, key in enumerate(new_dict.keys()):
    # 这里可以加额外的判断或处理逻辑
    new_dict[key] = target_array[idx]

验证结果

你可以打印new_dict['10.0.1.1']来验证,会输出:

array([-0.        ,  0.        ,  0.        , -0.92999877,  2.        ])

完全符合你期望的结果。

注意事项

如果你的Python版本低于3.7,字典是无序的,这时候需要手动定义键的顺序列表,比如:

keys_order = [
    '10.0.1.1', '10.0.1.11', '10.0.1.17', '10.0.1.18',
    '10.0.1.2', '10.0.1.22', '10.0.1.23', '10.0.1.25',
    '10.0.1.26', '10.0.1.5', '10.0.1.6', '10.0.1.9',
    '10.0.11.100', '10.0.12.100', '10.0.13.100', '10.0.14.100'
]

然后遍历这个列表来替换:

new_dict = {key: target_array[idx] for idx, key in enumerate(keys_order)}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 04:47:45