我正在尝试了解递归的工作原理,特别是如何将其分解为子部分并对其进行处理,同时保持所有部分都属于一个整体部分(如果这有意义的话)。
例如:如果给我一个像 [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/