Python如何使用for循环生成形如[a][b][c]的嵌套列表用于字典取值?
你之前用append得到的是按顺序存放key的列表,仅完成了key的收集,没有实现逐层访问字典的逻辑,所以无法得到[a][b][c]形式的嵌套取值效果。你需要的[a][b][c]格式本质是嵌套字典的连续按key取值,可通过以下两种方式完成对应逻辑:
实现方法
方法1:循环遍历取值
先修正原有代码的语法问题(Python函数定义关键字为小写def,不建议使用大写开头的变量名),修改后逻辑如下:
def get_nested_value(target_dict, key_list): # 初始化当前取值层级为顶层字典 current_level = target_dict for key in key_list: # 逐层进入下一级字典 current_level = current_level[key] return current_level
方法2:用reduce简化写法
可以借用functools.reduce和operator.getitem简化代码:
from functools import reduce import operator def get_nested_value(target_dict, key_list): return reduce(operator.getitem, key_list, target_dict)
使用示例
# 测试用嵌套字典 my_dict = { "a": { "b": { "c": "目标取值结果" } } } # 按顺序存放key的列表 key_list = ["a", "b", "c"] # 调用方法取值,等价于 my_dict["a"]["b"]["c"] print(get_nested_value(my_dict, key_list))
运行后输出:目标取值结果
内容的提问来源于stack exchange,提问作者mycodesfly
相关产品推荐
相关产品推荐

