Python中已知嵌套字典的各级key存在变量中时如何访问对应值
报错原因
你写的x[k[nestedk]]的运算优先级是先执行方括号内的k[nestedk]逻辑:
- 变量
k的值是字符串'mynested',Python中字符串索引只支持整数参数,你传入的nestedk是字符串类型'blah',不符合语法要求,所以直接触发TypeError: string indices must be integers报错。
正确访问方式
嵌套字典的取值需要从外层到内层逐层用key访问,先通过第一层keyk拿到内层字典对象,再用第二层keynestedk取最终值,写法如下:
print(x[k][nestedk])
运行后会正确输出结果1。
扩展:多层key通用取值方法
如果嵌套层级很多,各级key存在列表里,可以写个通用工具函数避免手动逐层写括号:
def nested_get(d, keys): for key in keys: d = d[key] return d # 调用示例 keys = [k, nestedk] print(nested_get(x, keys))
内容的提问来源于stack exchange,提问作者dobbs
相关产品推荐
相关产品推荐

