使用索引列表从嵌套字典中获取项-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