You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中访问嵌套字典数据及实现最高热量餐单生成函数的方法

解决嵌套字典的最高热量餐单生成问题 & 新手学习指引

嗨,我来帮你搞定这个问题!你已经掌握了基础的嵌套字典访问,接下来我们一步步实现这个函数,同时给你一些针对新手的学习建议。

一、最高热量餐单函数实现

你的需求是每个菜品类别中选一个热量最高的菜品,组成餐单——因为每个类别必须选一个,所以最优解就是每个类别挑热量最高的那个,这样整体餐单的总热量自然是最大的。下面是具体的函数实现:

def get_highest_calorie_meal(menu_data):
    # 用来存储每个餐厅的最高热量餐单
    highest_meals = {}
    
    # 遍历每一家餐厅
    for restaurant, categories in menu_data.items():
        restaurant_meal = {}
        # 遍历当前餐厅的每个菜品类别(比如Burgers、French Fries)
        for category, dishes in categories.items():
            # 找到当前类别中热量最高的菜品
            # max函数的key参数指定用菜品的calories值来比较
            highest_cal_dish = max(dishes.items(), key=lambda x: x[1]['calories'])
            # 把类别和对应的最高热量菜品存入餐单
            # 这里我们存储菜品名称和完整营养信息
            restaurant_meal[category] = {
                'dish_name': highest_cal_dish[0],
                'nutrition': highest_cal_dish[1]
            }
        # 把当前餐厅的餐单加入结果字典
        highest_meals[restaurant] = restaurant_meal
    
    return highest_meals

# 调用函数测试
result = get_highest_calorie_meal(rivals)
# 打印结果(可以按需调整输出格式)
for restaurant, meal in result.items():
    print(f"\n=== {restaurant} 最高热量餐单 ===")
    total_cal = 0
    for category, dish_info in meal.items():
        print(f"{category}: {dish_info['dish_name']}")
        print(f"  热量: {dish_info['nutrition']['calories']} 卡,碳水: {dish_info['nutrition']['carbs']}g,脂肪: {dish_info['nutrition']['fat']}g")
        total_cal += dish_info['nutrition']['calories']
    print(f"总热量: {total_cal} 卡")

代码解释:

  • menu_data.items():遍历字典的键值对,这里拿到的是餐厅名称和对应的类别字典。
  • max(dishes.items(), key=lambda x: x[1]['calories']):dishes.items()返回的是(菜品名称,营养字典)的元组,lambda x: x[1]['calories']告诉max()函数用营养字典里的calories值来比较大小,最终返回热量最高的那个菜品元组。
  • 结果结构清晰,每个餐厅对应一个餐单,餐单里每个类别都标注了选中的菜品和营养信息,还可以计算总热量。

二、Python新手学习指引

针对你遇到的嵌套数据访问和自定义函数问题,给你几个重点学习方向:

  • 嵌套数据结构的遍历技巧:
    多层嵌套字典/列表的访问,核心是逐层拆解。可以先打印每一层的数据(比如print(rivals['In-N-Out Burger'].keys())),直观理解数据结构,再写循环。
  • 内置函数的灵活使用:
    像max()、min()这类函数的key参数非常实用,能帮你快速找到符合条件的元素,避免写冗长的循环判断。同理还有sorted()函数,也可以用key参数自定义排序规则。
  • 自定义函数的设计思路:
    遇到需求先拆解步骤(比如你的问题:遍历餐厅→遍历类别→找每个类别最高热量菜品→收集结果),把大问题拆成小步骤,再逐步转化为代码。
  • 调试与验证:
    写代码时不要一次性写完,每完成一个小步骤就打印中间结果验证。比如先写遍历餐厅的循环,打印餐厅名称;再写遍历类别的循环,打印类别名称;最后加找最高热量菜品的逻辑,这样能快速定位问题。
  • 代码可读性优化:
    用有意义的变量名(比如restaurant、categories、dishes),避免用a、b这类模糊的名字;加必要的注释,解释关键逻辑,方便自己后期维护和别人理解。

内容的提问来源于stack exchange,提问作者newtopython

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 19:17:27