【发布时间】:2021-12-04 07:20:47
【问题描述】:
我需要调用一个递归函数来打印嵌套字典的内容,如下所示:
lunch : {"sandwich": 2, "chips": 1, "drink": 1}
dinner : {"ribs": 6, "mac_cheese": 1, "roll": 1, "pie": 1}
我尝试了以下代码,但它只是迭代嵌套字典的键
# recursive function for printing out meal plans
def print_meals(meal_plan):
for key, value in meal_plan.items():
if type(value) is dict:
print_meals(value)
else:
print(key, ":", value)
# create an empty dictionary
meal_plan = {}
# create individual dictionaries for each meal
lunch = {"sandwich": 2, "chips": 1, "drink": 1}
dinner = {"ribs": 6, "mac_cheese": 1, "roll": 1, "pie": 1}
#create a nested dictionary
meal_plan["lunch"] = lunch
meal_plan["dinner"] = dinner
# call recursive function 'print_meals'
print_meals(meal_plan)
【问题讨论】:
-
输入中的嵌套字典在哪里?我可以看到,都是普通的字典。
-
@JohnByro 我正在创建嵌套字典的注释下创建嵌套字典。它被存储在字典 meal_plan
-
是否保证嵌套字典中只有一层深度?或者你可以有例如
meal_plan = {'monday': {'lunch': {...}, 'dinner': {...}}, 'tuesday': {...}} -
我建议使用
isinstance(value, dict)而不是type(value) is dict。例如,如果value是dict的子类,那么isinstance(value, dict)仍将返回True,但type(value) is dict将返回False。 -
如果没有任意级别的嵌套,则不需要递归。
标签: python dictionary recursion