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

Python遍历嵌套列表 按扫描物料编号匹配返回对应规格参数

Python 物料编号检索实现方案

直接上可运行的实现代码,适配你给出的嵌套列表数据结构和输出要求:

# 原始物料数据集
material_data = [
    ["16W1509462     ", "  FR-CHJAV-VSDB4234HL           ",  30.5,  42.0, 0.75,  "JAVA      "],
    ["16W1509463     ", "  FR-CHJAV-BT-VSDB4234HL        ",  30.5,  42.0,  0.75,  "JAVA      "],
    ["16W1509463     ", "  FR-CHJAV-BT-VSDB4234HL        ",  30.5,  42.0, 0.75,  "JAVA      "],
    ["16W1509473     ", "  FR-CHJAV-BT-VSDB4234HR        ",  30.5,  42.0,  0.75,  "JAVA      "],
    ["16W1509473     ", "  FR-CHJAV-BT-VSDB4234HR        ",  30.5,  42.0, 0.75,  "JAVA      "],
    ["16W1509481     ", "  FR-CHJAV-VSDB4834HD           ",  30.5,  48.0,  0.75,  "JAVA      "],
    ["16W1509481     ", "  FR-CHJAV-VSDB4834HD           ",  30.5,  48.0, 0.75,  "JAVA      "],
    ["16W1509503     ", "  FR-CHJAV-BT-VSDB6034HD        ",  30.5,  60.0,  0.75,  "JAVA      "],
    ["16W1509503     ", "  FR-CHJAV-BT-VSDB6034HD        ",  30.5,  60.0, 0.75,  "JAVA      "]
]

# 数据预处理:清除所有字符串字段前后冗余空格,避免空格导致匹配失败
cleaned_data = []
for item in material_data:
    cleaned_item = []
    for field in item:
        cleaned_item.append(field.strip() if isinstance(field, str) else field)
    cleaned_data.append(cleaned_item)

def search_material(scanned_code: str):
    scanned_code = scanned_code.strip()
    # 输出固定头部
    print("<hr />")
    print(f"<p>Item scanned: {scanned_code}</p>")
    # 去重标记,避免重复条目多次输出
    output_record = set()
    for mat in cleaned_data:
        if mat[0] == scanned_code:
            mat_key = tuple(mat)
            if mat_key not in output_record:
                mat_info = " , ".join(str(field) for field in mat)
                print(f"<p>{mat_info}</p>")
                output_record.add(mat_key)

# 业务调用示例
if __name__ == "__main__":
    # 实际使用时将下方变量替换为扫码枪获取的物料编号即可
    scanned_item_code = "16W1509462"
    search_material(scanned_item_code)

关键说明

  • 预处理步骤是生产环境必须加的:原始数据的字符串字段带大量前后空格,扫码枪输出的编号一般不带冗余空格,不做清洗会出现匹配不到的问题
  • 内置了重复条目去重逻辑:示例数据中同个物料存在多条重复记录,不会重复打印相同信息
  • 输出格式完全匹配要求,运行上述测试代码的输出结果如下:
<hr />
<p>Item scanned: 16W1509462</p>
<p>16W1509462 , FR-CHJAV-VSDB4234HL , 30.5 , 42.0 , 0.75 , JAVA</p>
  • 如果需要处理编号不存在的场景,只要在函数末尾判断output_record是否为空,为空时打印对应提示即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 10:36:38