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

时间:2018-03-26 00:01:27

标签: python list iteration

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

{"foo":{"abc":123},"bar":{"def":456},"biz":789}

我有一个像这样的索引列表:

["foo","abc"]

我如何获取和修改该项目?我见过这样的问题,但所有答案都告诉我要做一堆索引:

foobar["foo"]["abc"] = "modified"

但问题是我的索引在列表中。此外,我可以做一些像[“foo”,“abc”,“more”,“items”]这样的东西,这需要等同于foobar [“foo”] [“abc”] [“more”] [“items” “]

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

1 个答案:

答案 0 :(得分:1)

这很简单,使用递归,如:

代码:

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