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

如何通过列表形式的路径变量操作Python嵌套字典?

解决嵌套字典路径定位并添加键值对的问题

我太懂这种困扰了!直接把路径列表当键用肯定不行,因为字典只会把整个列表(或转成的元组)当成单个键来查找,根本不会逐层深入嵌套结构。咱们换个思路,一步步遍历路径里的每一项,就能精准定位到你要操作的层级了。

最直接的实现方式:手动遍历路径

写个简单的循环就能搞定,逐层深入到目标对象:

my_dict = { "test": [ { "inner_test": [ { "name": "Jack" }, { "name": "Ann" } ] }, { "inner_test": [ { "name": "David" }, { "name": "Danny" } ], "some_test": [ 3, [ { "name": "Benny" }, { "name": "Ann" } ] ] } ] }
test_var_2 = ['test',0,'inner_test',1]

# 一步步走到目标层级
current = my_dict
for key in test_var_2:
    current = current[key]

# 现在current就是你要操作的那个字典,直接加键值对就行
current['country'] = 'a_country'

# 验证一下结果
print(my_dict['test'][0]['inner_test'][1])
# 输出:{'name': 'Ann', 'country': 'a_country'}

封装成复用函数(更优雅)

如果以后还要多次处理类似的嵌套路径,把这个逻辑封装成函数会更方便:

def get_nested_object(data, path):
    current_item = data
    for key in path:
        current_item = current_item[key]
    return current_item

# 调用函数定位目标
target_obj = get_nested_object(my_dict, test_var_2)
target_obj['country'] = 'a_country'

为啥之前的方法不管用?

  • 把test_var_2转成元组后用my_dict[tuple(test_var_2)],相当于告诉字典“找一个键是('test',0,'inner_test',1)的项”,但你的字典里根本没有这个键,自然会抛出KeyError。
  • 有些第三方库可能对嵌套结构的格式有要求,或者你没找对正确的调用方式,反而手动遍历这种基础方法更可靠、容易调试。

这样操作后,你就能通过路径变量自由操作任意嵌套深度的字典层级啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:23:35