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

设备统计函数异常求助:需正确实现大/小型设备计数功能

问题分析与修复

核心问题

你的代码存在两个关键错误,直接导致统计异常:

  • return语句缩进错误:把return x,y放在了for循环内部,函数遍历到第一个设备就直接返回,根本没完成整个recipe['equipment']列表的统计。
  • 返回结构冗余:返回两个独立字典的元组,后续批量处理时会得到元组列表,不利于数据整合。

另外还有个小问题:生成small_equipment的注释写错了,应该标注为生成小型设备列表,不是大型。

修正后的代码

# 定义大型设备关键词
big_equip = ['pot', 'skillet', 'sheet pan']
# 从完整设备列表中筛选大型设备
big_equipment = [bigE for bigE in equipment_list if any(xs in bigE for xs in big_equip)]

# 定义小型设备关键词
sml_equip = ['Whisk', 'Wooden spoon', 'Tongs', 'Spatula', 'bowl']
# 从完整设备列表中筛选小型设备(修正注释错误)
small_equipment = [smallE for smallE in equipment_list if any(xs in smallE for xs in sml_equip)]


def count_equipment(recipe):
    # 合并统计字典,结构更简洁
    equipment_count = {'big equipment': 0, 'small equipment': 0}
    for z in recipe['equipment']:
        if z in big_equipment:
            equipment_count['big equipment'] += 1
        elif z in small_equipment:  # 用elif避免同一设备被重复统计(防止未来关键词重叠)
            equipment_count['small equipment'] += 1
    # 将return移到循环外部,确保遍历完所有设备再返回结果
    return equipment_count

# 现在得到的是字典列表,每个字典对应一个食谱的设备统计结果
equipment_columns = [count_equipment(_) for _ in safe_result]

额外优化说明

  • 合并两个统计字典为一个,后续处理数据时无需拆分元组,更便捷。
  • 把第二个if改为elif,避免未来出现关键词重叠时,同一设备被重复计数。
  • 修正注释错误,提升代码可读性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 04:35:04