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

Python 3.9列表循环效率优化:按JSON分类购物清单的代码优化问询

优化方案

核心优化点

  • 用字典存储各过道分类结果,替代手动声明数十个列表变量,完全消除冗长的if-elif判断链
  • 将购物列表转为集合,将商品匹配的时间复杂度从O(n)降到O(1),同时砍掉两层多余的嵌套循环,执行效率大幅提升
  • 支持动态适配JSON文件里的所有过道配置,后续新增过道无需修改代码逻辑

优化后代码

import json

shopping_list = ["canned tomatoes", "bread", "eggs", "milk"]
# 转集合加速匹配
shopping_set = set(shopping_list)
# 用字典存各过道的商品,key为过道编号,value为对应商品列表
isle_items = {}
# 特殊映射规则,对应原代码中i=6时存到过道5的逻辑
special_isle_map = {6:5}

with open("isleTypes.json") as f:
    data = json.load(f)

# 遍历所有过道配置,如需限制过道编号范围可加判断 2<=isle_num<=17
for isle_key in data:
    # 提取过道编号,比如"_2"提取出2
    isle_num = int(isle_key.strip("_"))
    # 应用特殊映射规则
    target_isle = special_isle_map.get(isle_num, isle_num)
    # 初始化对应过道的列表
    if target_isle not in isle_items:
        isle_items[target_isle] = []
    # 遍历当前过道的所有商品,匹配购物清单
    for item in data[isle_key]:
        if item in shopping_set:
            isle_items[target_isle].append(item)

# 按需读取对应过道的商品,比如打印过道2的商品
for item in isle_items.get(2, []):
    print(item)

扩展说明

如果后续需要新增特殊映射规则,直接往special_isle_map字典加键值对即可,不需要修改遍历逻辑。如果需要输出所有过道的分类结果,直接遍历isle_items字典即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 15:30:02