设计思路
- 遍历数据结构:使用递归方法来遍历多层嵌套的字典、列表或元组。这样可以处理任意深度的嵌套结构。
- 判断叶子节点:当遇到不再是字典、列表或元组的元素时,认为它是叶子节点。
- 动态生成字典:使用一个字典来存储结果,键是叶子节点值的类型,值是包含该类型叶子节点值的列表。
- 性能优化:
- 避免重复计算:在递归过程中,每次处理的数据都是新的子结构,没有重复计算。
- 减少不必要的内存占用:在递归过程中,只在找到叶子节点时才将其添加到结果字典中,不会存储中间过程的大量数据。
实现代码
def extract_leaf_nodes(data):
result = {}
def recursive_traverse(sub_data):
if isinstance(sub_data, dict):
for value in sub_data.values():
recursive_traverse(value)
elif isinstance(sub_data, (list, tuple)):
for item in sub_data:
recursive_traverse(item)
else:
data_type = type(sub_data)
if data_type not in result:
result[data_type] = []
result[data_type].append(sub_data)
recursive_traverse(data)
return result