python - 使用递归 Python 创建嵌套字典

标签 python recursion

我正在尝试了解递归的工作原理,特别是如何将其分解为子部分并对其进行处理,同时保持所有部分都属于一个整体部分(如果这有意义的话)。

例如:如果给我一个像 [1,2,3,4,5] 这样的列表,我想编写一个函数,在字典中连续创建一个字典,其中列表中的每个元素都是键;输出如下 - {1:{2:{3:{4:{5:{}}}}}}。

我知道这可以通过一个简单的 for 循环来完成,但重点是我想了解递归是如何工作的。这是我尝试过的,我知道这可能还很遥远。 :(

data = [1,2,3,4,5]
split_order = dict()

def split(data, split_order):
  if len(data) == 0:
      return split_order
  else:
      attr = data[0]
      new_data = data[1:]
      split_order[attr] = dict()
      split_order[attr] = split(new_data, split_order[attr])

最佳答案

您不会在 else 子句中返回任何内容。您也不需要将 split_order 传递到您的函数中:

def split(data):
    if data:
        head, *tail = data  # This is a nicer way of doing head, tail = data[0], data[1:]
        return {head: split(tail)}
    else:
        return {}

关于python - 使用递归 Python 创建嵌套字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52349884/

相关文章:

python - 将 JSON 转换为 XML 时避免字符转义

javascript - 为什么这个递归 javascript 函数会返回它所做的事情?

python - 目录递归仅深入一个目录

java - CodingBat——递归编码

string - 使用递归将所有出现的子字符串替换为另一个子字符串

python - 迭代 pandas 数据帧的索引

python - 手动将数组输入到python函数中

python - 如何将 XML 文件读入 Pandas Dataframe

python - 将带有 numpy 数组的字典写入 .csv

Golang中结构的递归函数