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

Python使用argparse从动态参数列表中提取key/value的实现方法

你可以通过步长为2的遍历方式直接从剩余参数数组中两两提取键值,同时建议先做参数合法性校验避免异常,实现代码如下:

import argparse

def set_config(key, val):
    # 你的原有配置设置逻辑
    print(f"set {key} = {val}")

parser = argparse.ArgumentParser(description='My app.')
parser.add_argument('-n', '--project-name', required=False, default='test')
args, remaining_argv = parser.parse_known_args()

# 校验参数长度是否为偶数,避免出现单独的key无对应value的异常
if len(remaining_argv) % 2 != 0:
    raise ValueError("额外参数格式错误,需按照「键1 值1 键2 值2……」的格式传入")

# 步长为2遍历数组,每次取一组键值
for idx in range(0, len(remaining_argv), 2):
    # 可选操作:去掉参数键前面的-、--前缀,比如传入--max-retry 10,自动提取key为max-retry
    key = remaining_argv[idx].lstrip('-')
    value = remaining_argv[idx+1]
    set_config(key, value)

如果追求更简洁的写法,也可以用迭代器配对的方式实现,不需要手动控制索引:

arg_iter = iter(remaining_argv)
for key, value in zip(arg_iter, arg_iter):
    set_config(key.lstrip('-'), value)

注意你原有代码里存在变量名错误:parser.parse_known_args()返回的剩余参数变量名是remaining_argv,后续计算长度时误写为了remaining_args,需要注意修正。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 14:45:03