创建一个递归函数来显示字典中列表的数字深度



设计一个函数depth_map,该函数返回一个字典,该字典的键是中项目的深度,给定键的值是该深度的项目列表。嵌套列表中对象的深度是包含该对象的嵌套列表的数量。单个int的深度为0。如果在给定深度处没有出现任何项目,则该键不应出现在字典中。使用函数设计配方,您必须使用递归来解决问题。这是我的任务,它真的很困惑,我也找不到解决它的方法。

depth_map([19,[[22]],[-3,[8],47]](输出->{1:[19],3:[22,8],2:[-3,47]}

p>您需要使用递归。首先创建一个检查类型的函数。如果类型是列表,则再次调用该函数,直到它不是列表为止。一旦发生这种情况,将值附加到任何深度的列表中。
def depth_map(array: list, depth=1, result={}) -> dict:
for element in array:
if type(element) == list:
result = depth_map(element, depth + 1, result)
else:
if result.get(depth):
result[depth].append(element)
else:
result[depth] = [element]
return result

a = [19, [[22]], [-3, [8], 47]]
depth_map(a)

最新更新