如何通过递归获取不同嵌套层级字典中的最内层字典?
递归获取嵌套字典的最内层字典
原代码问题分析
你当前的递归函数存在逻辑缺陷:调用recursion(info[key])时没有接收递归返回的结果,最后返回的store只是当前遍历层级的字典,无法深入到最内层结构。
正确实现方案
以下是能准确获取最内层字典的递归函数:
def get_inner_dict(data): # 遍历字典的所有值 for value in data.values(): if isinstance(value, dict): # 如果当前值是字典,递归进入该字典并返回结果 return get_inner_dict(value) # 当所有值都不是字典时,当前字典即为最内层 return data
测试验证
用你的示例字典测试:
info = {'k1': { 'k2': { 'k3': 'v3', 'k4': 'v4', 'k5': 'v5'} }, } print(get_inner_dict(info)) # 输出: {'k3': 'v3', 'k4': 'v4', 'k5': 'v5'}
多分支场景补充
如果你的嵌套字典存在多个字典分支(比如某一层级有多个子字典),可以修改函数返回所有最内层字典的列表:
def get_all_inner_dicts(data): inner_dicts = [] has_child_dict = False for value in data.values(): if isinstance(value, dict): has_child_dict = True inner_dicts.extend(get_all_inner_dicts(value)) if not has_child_dict: inner_dicts.append(data) return inner_dicts
内容的提问来源于stack exchange,提问作者htodev
相关产品推荐
相关产品推荐

