【问题标题】:Getting an item from a nested dictionary using a list of indexes - python [duplicate]使用索引列表从嵌套字典中获取项目 - python [重复]
【发布时间】:2018-03-26 00:01:26
【问题描述】:

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

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

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

["foo","abc"]

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

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

但问题是我的索引在列表中。另外,我可以做类似 ["foo","abc","more","items"] 的事情,这需要等同于 foobar["foo"]["abc"]["more"]["items "]

有什么方法可以使用索引列表获取和修改字典中的项目?

【问题讨论】:

    标签: python list iteration


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 2011-06-02
      • 2021-05-10
      • 1970-01-01
      • 2013-09-12
      • 1970-01-01
      • 2019-02-21
      • 2022-01-09
      • 1970-01-01
      • 2020-07-14
      相关资源
      最近更新 更多