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

Python中使用索引列表获取并修改嵌套字典中的元素

动态遍历嵌套字典的索引列表来获取/修改元素

这问题我太熟悉了——硬编码多层索引确实不灵活,尤其是索引列表长度不确定的时候,用循环遍历索引列表就完美解决,不管索引有多长都能适配。

获取对应元素的方法

核心思路就是从原始字典出发,顺着索引列表里的每个键逐层往下钻,最后得到目标值:

# 你的原始数据和索引列表
data = {"foo":{"abc":123},"bar":{"def":456},"biz":789}
indices = ["foo","abc"]

# 遍历索引获取值
current_node = data
for key in indices:
    current_node = current_node[key]

print(current_node)  # 输出:123

如果是更长的索引列表,比如["foo","abc","more","items"],只要你的字典里有对应的层级结构,这段代码同样适用,不需要做任何修改。

修改对应元素的方法

修改的话要注意:不能直接遍历到最后一个元素(因为那时候current_node是值本身,不是字典/可修改的容器),我们需要停在倒数第二个索引对应的节点上,然后用最后一个索引来修改值:

# 修改目标元素
current_node = data
# 遍历除最后一个索引外的所有键,定位到父节点
for key in indices[:-1]:
    current_node = current_node[key]

# 用最后一个索引修改值
current_node[indices[-1]] = "modified"

print(data)  # 输出:{"foo":{"abc":"modified"},"bar":{"def":456},"biz":789}

可选:添加错误处理

如果担心索引列表里的某个键不存在(比如字典里没有对应的层级),可以加个异常捕获避免程序崩溃:

# 带错误处理的获取操作
try:
    current_node = data
    for key in indices:
        current_node = current_node[key]
    print(current_node)
except KeyError as e:
    print(f"索引路径无效,不存在的键:{e}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:31:22