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

如何用for循环从Python字典动态生成音频切片变量?

问题

我通过pydub包将WAV音频文件导入Python,现有一个字典,每个键对应一组音频切割的起始、结束时间戳。我希望通过for循环创建多个变量,变量名对应字典的键,变量值为对应的音频切片(音频文件变量名为audio,切片示例:audio[0:300000])。

示例字典:

pairs = {
    "part1": [0, 300000],
    "part2": [300001, 600000],
    "part3": [600001, 900000],
    "part4": [900001, 1200000]
}

我已编写以下代码,但不清楚如何在循环中动态创建存储实际音频切片的变量:

for key, start_end in pairs.items():
  start, end = start_end
  sliced_audio = audio[start:end]

此前在Stack Overflow看到类似print(f"{key} = {sliced_audio}")的写法,但我不需要字符串形式,而是要存储音频切片的实际变量,求解答。

解决方案

方法1:动态创建全局/局部变量

通过修改全局或局部命名空间,直接将音频切片赋值给对应键的变量名:

from pydub import AudioSegment

# 先导入音频文件
audio = AudioSegment.from_wav("你的音频文件.wav")

pairs = {
    "part1": [0, 300000],
    "part2": [300001, 600000],
    "part3": [600001, 900000],
    "part4": [900001, 1200000]
}

for key, start_end in pairs.items():
    start, end = start_end
    # 用globals()创建全局变量,若需局部变量替换为locals()
    globals()[key] = audio[start:end]

# 后续可直接通过变量名调用,比如part1就是对应的音频切片
print(part1.duration_seconds)

方法2:推荐用字典存储(更安全易维护)

动态创建变量容易引发命名冲突、降低代码可读性,更建议将切片后的音频存入新字典,用原字典的键作为索引:

from pydub import AudioSegment

audio = AudioSegment.from_wav("你的音频文件.wav")
pairs = {
    "part1": [0, 300000],
    "part2": [300001, 600000],
    "part3": [600001, 900000],
    "part4": [900001, 1200000]
}

sliced_audios = {}
for key, start_end in pairs.items():
    start, end = start_end
    sliced_audios[key] = audio[start:end]

# 调用时通过字典索引访问,比如sliced_audios["part1"]
print(sliced_audios["part1"].duration_seconds)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 06:35:19