首页 > 解决方案 > 使用Python中的数组递归查找字典中的元素

问题描述

我有一个数组:

["a", "1", "2"]

和一个有点复杂的字典:

{
  "a":{
    "1": {
      "1": "Some text",
      "2": "This is the text I want",
      "3": "Even more"
    },
    "2": {
      "1": "Some text",
      "2": "More text"
    }
  },
  "b": {
    "1": "Here is some text",
    "2": {
      1: "Some text"
    },
    "3": {}
  }
}

我怎样才能使用我的数组来获得"This is the text I want"?我是递归新手,所以我真的不知道如何正确解决这个问题

标签: pythonarraysdictionaryrecursion

解决方案


由于数组的顺序正确,因此在每个递归步骤中,您都希望使用列表的前面来获取下一个最内部的字典。像这样的东西:

def get_dict(arr, d):
    if not arr:
        return d
    return get_dict(arr[1:], d[arr[0]])

更有效的方法是在开始时反转数组,然后从末尾获取元素,因为从末尾获取元素是恒定时间,而从前面获取元素是线性的(必须将所有内容移过来)。如果这样做,请确保在递归开始之前只反转一次。


推荐阅读