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

如何使用字典按索引映射替换Python列表中的数值

问题

假设我们有一个size = 10、元素全为1的向量(列表),如何编写代码实现以索引为键、待替换数值为值的字典,替换列表对应位置的元素?示例如下:

Vector = [1,1,1,1,1,1,1,1,1,1]
Dict = {2:4, 6:9, 9:3}

# 预期输出
[1,4,1,1,1,9,1,1,3,1]
实现方法

Python列表原生支持按索引位置直接赋值,核心逻辑就是遍历替换字典的键值对,逐个修改对应位置的元素即可。
注意示例里的字典键是日常计数习惯的1起始位置编号(比如键2对应列表里的第2个元素),和Python列表默认的0起始索引差1个偏移,实现时要对应调整:

# 初始化原始列表
vector = [1] * 10
replace_map = {2:4, 6:9, 9:3}

# 遍历替换,1起始位置转Python 0基索引需要减1
for pos, new_val in replace_map.items():
    vector[pos - 1] = new_val

print(vector)

运行后输出和示例完全一致:

[1, 4, 1, 1, 1, 9, 1, 1, 3, 1]

如果你的字典键本身就是Python默认的0起始索引,直接去掉偏移即可:

vector = [1] * 10
replace_map = {2:4, 6:9, 9:3}

for idx, new_val in replace_map.items():
    vector[idx] = new_val

print(vector)
# 输出:[1, 1, 4, 1, 1, 1, 9, 1, 1, 3]

鲁棒性优化

如果无法保证字典里的索引都在列表的有效范围内,可以加一层范围判断,避免抛出索引越界错误:

vector = [1] * 10
replace_map = {2:4, 6:9, 9:3, 15:2} # 15超出长度10的列表的有效索引范围

for pos, new_val in replace_map.items():
    idx = pos - 1 # 0基索引直接用pos即可
    if 0 <= idx < len(vector):
        vector[idx] = new_val

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 22:18:57