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

使用Python从JSON中提取指定的Applied Voltage值并存入列表

使用Python从JSON中提取指定的Applied Voltage值并存入列表

嘿,我看了你遇到的问题,其实你现在的代码绕了不少弯路,而且没正确遍历到Sub_Tests里的Applied Voltage字段,我来帮你捋捋怎么解决~

先说说你现有代码的问题

  1. 你把analogOut.procedure.values()存到listof_content后,每个元素其实是包含测试用例字典的列表(比如Test Case 1对应的是[{...}]这种结构),所以直接判断"Applied Voltage" in x肯定找不到——x是列表,不是内层的子测试字典。
  2. 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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 15:53:00