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

Python如何匹配嵌套列表值?函数循环逻辑问题求助

问题分析与代码修正

原代码存在几个关键问题:

  • 多余的嵌套循环:output中的每个元素本身就是完整的过敏记录([患者, 过敏原, 反应]),不需要再内层遍历每个元素
  • 提前返回None:第一次不匹配就直接返回None,导致后续符合条件的记录根本不会被检查
  • 未使用参数json_file:函数接收了JSON文件参数,但实际逻辑里直接用了全局变量output,不符合设计要求

修正后的代码

import json

def reaction(json_file, patient, substance):
    # 从JSON文件读取过敏数据
    with open(json_file, 'r') as f:
        output = json.load(f)
    
    # 遍历每条过敏记录
    for allergy in output:
        # 匹配患者和过敏原
        if allergy[0] == patient and allergy[1] == substance:
            return allergy[2]
    # 遍历完所有记录都没匹配到,返回None
    return None

# 示例JSON文件内容(假设ALLERGIES_FILE指向的文件内容如下)
# [
#     ["Tom", "Bee", "Hives"],
#     ["Bean", "Ivy", "Bruising"],
#     ["Tom", "Shellfish", "Itching"]
# ]

# 断言验证
assert reaction(ALLERGIES_FILE, 'Tom', 'Bee') == 'Hives'
assert reaction(ALLERGIES_FILE, 'Tom', 'Shellfish') == 'Itching'

关键修改说明

  1. 移除多余嵌套循环:直接遍历output中的每条过敏记录,无需内层循环
  2. 调整返回逻辑:只有找到匹配记录时才返回反应值,遍历完所有记录都没匹配到再返回None,不会提前终止
  3. 利用JSON文件参数:通过json.load从传入的JSON文件中读取数据,不再依赖全局变量,符合函数设计的参数要求

内容的提问来源于stack exchange,提问作者Sav K.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 04:20:33