使用Python从JSON中提取指定的Applied Voltage值并存入列表
使用Python从JSON中提取指定的Applied Voltage值并存入列表
嘿,我看了你遇到的问题,其实你现在的代码绕了不少弯路,而且没正确遍历到Sub_Tests里的Applied Voltage字段,我来帮你捋捋怎么解决~
先说说你现有代码的问题
- 你把
analogOut.procedure.values()存到listof_content后,每个元素其实是包含测试用例字典的列表(比如Test Case 1对应的是[{...}]这种结构),所以直接判断"Applied Voltage" in x肯定找不到——x是列表,不是内层的子测试字典。 voltage_values.index(len(voltage_values), x.values())这行完全用错了:index是用来查找元素位置的方法,不是添加元素的,你应该用append;而且你也没拿到真正的Applied Voltage值。
下面是正确的实现方式
方式一:逐层遍历(直观易懂,适合调试)
import json with open("signal_procedure.json", "r") as file: # 直接加载JSON到变量,不用存到analogOut.procedure里(当然如果你的项目需要保留也可以) procedure = json.load(file) voltage_values = [] # 遍历所有测试用例的内容(每个case_list是类似[{"Test Case": "...", "Sub_Tests": [...]}]的列表) for case_list in procedure.values(): # 从你的JSON结构看,每个测试用例列表里只有1个字典,直接取第一个元素 case_details = case_list[0] # 拿到子测试列表,逐个遍历 for sub_test in case_details["Sub_Tests"]: # 提取Applied Voltage值,这里可以根据需要转成浮点型(比如float(sub_test["Applied Voltage"])) voltage = sub_test["Applied Voltage"] voltage_values.append(voltage) print(voltage_values)
方式二:列表推导式(简洁紧凑)
如果你的JSON结构很规范,不会缺字段,用列表推导式可以一行搞定提取逻辑:
import json with open("signal_procedure.json", "r") as file: procedure = json.load(file) # 三层嵌套循环,一次性提取所有Applied Voltage voltage_values = [ sub_test["Applied Voltage"] for case_list in procedure.values() for case_details in case_list for sub_test in case_details["Sub_Tests"] ] # 要是需要把字符串转成数值类型,改成下面这样: # voltage_values = [float(sub_test["Applied Voltage"]) for ...] print(voltage_values)
额外提示:避免KeyError的容错处理
如果你的JSON里可能存在缺失Sub_Tests或Applied Voltage的情况,可以加个判断防止报错:
import json with open("signal_procedure.json", "r") as file: procedure = json.load(file) voltage_values = [] for case_list in procedure.values(): for case_details in case_list: # 先判断有没有Sub_Tests字段 if "Sub_Tests" in case_details: for sub_test in case_details["Sub_Tests"]: # 再判断有没有Applied Voltage字段 if "Applied Voltage" in sub_test: voltage_values.append(sub_test["Applied Voltage"]) print(voltage_values)
这样运行起来就不会因为某个测试用例结构不完整而崩溃啦~
备注:内容来源于stack exchange,提问作者oznurc
相关产品推荐
相关产品推荐

