Python如何使用递归函数按指定格式打印嵌套字典内容
问题原因
你的代码存在两个核心问题:
- 缩进错误:字典初始化、函数调用的代码全部写在了
print_meals函数定义内部,这部分代码只有调用函数时才会执行,还会和函数参数重名导致逻辑混乱。 - 递归逻辑错误:遍历到值为字典的键值对时,你直接进入递归打印内层内容,外层的
lunch、dinner键完全没有打印就进入了下一层,自然只会输出内层的键值对。
修复后代码
# 递归打印餐单函数 def print_meals(meal_plan): for key, value in meal_plan.items(): if isinstance(value, dict): # 先打印当前层的键和对应的字典内容,匹配你要的输出格式 print(f"{key} : {value}") # 如果需要继续打印内层字典的键值对,再打开下面这行注释 # print_meals(value) else: print(f"{key} : {value}") # 以下代码要放在函数定义外面,不要缩进 # 创建空餐单字典 meal_plan = {} # 定义每餐的子字典 lunch = {"sandwich": 2, "chips": 1, "drink": 1} dinner = {"ribs": 6, "mac_cheese": 1, "roll": 1, "pie": 1} # 组装嵌套字典 meal_plan["lunch"] = lunch meal_plan["dinner"] = dinner # 调用函数 print_meals(meal_plan)
运行输出
lunch : {'sandwich': 2, 'chips': 1, 'drink': 1} dinner : {'ribs': 6, 'mac_cheese': 1, 'roll': 1, 'pie': 1}
和你要求的输出格式完全一致。如果后续嵌套层级变多,只要保留递归调用的逻辑就能自动适配更深的嵌套结构。
内容的提问来源于stack exchange,提问作者python_beginner
相关产品推荐
相关产品推荐

