Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用索引列表从嵌套字典中获取项-python_Python_List_Iteration - Fatal编程技术网

使用索引列表从嵌套字典中获取项-python

使用索引列表从嵌套字典中获取项-python,python,list,iteration,Python,List,Iteration,我有一个奇怪的问题。如果我有一本这样的字典: {"foo":{"abc":123},"bar":{"def":456},"biz":789} 我有一个这样的索引列表: ["foo","abc"] 如何获取和修改该项目?我见过这样的问题,但所有的答案都告诉我要建立一系列索引,例如: foobar["foo"]["abc"] = "modified" 但问题是我的索引在列表中。此外,我还可以做一些类似于[“foo”、“abc”、“more”、“items”]的事情,这需要等同于foobar[“

我有一个奇怪的问题。如果我有一本这样的字典:

{"foo":{"abc":123},"bar":{"def":456},"biz":789}
我有一个这样的索引列表:

["foo","abc"]
如何获取和修改该项目?我见过这样的问题,但所有的答案都告诉我要建立一系列索引,例如:

foobar["foo"]["abc"] = "modified"
但问题是我的索引在列表中。此外,我还可以做一些类似于[“foo”、“abc”、“more”、“items”]的事情,这需要等同于foobar[“foo”][“abc”][“more”][“items”]


是否有某种方法可以使用索引列表获取和修改字典中的项?

使用递归非常直接,如:

代码: 测试代码: 结果:
def dict_access_multi(a_dict, keys):
    if len(keys) == 0:
        return a_dict
    return dict_access_multi(a_dict[keys[0]], keys[1:])
data = {"foo": {"abc": 123}, "bar": {"def": 456}, "biz": 789}

print(dict_access_multi(data, ["foo", "abc"]))
print(dict_access_multi(data, ["bar", "def"]))
print(dict_access_multi(data, ["biz"]))
123
456
789