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

Python中如何将动态参数变量的值存入字典而非变量名字符串

问题原因

你在给字典赋值的循环中使用的'port{0}'.format(i)只会生成"port1"/"port2"/"port3"这类普通字符串,不会自动关联到你提前定义的同名变量,所以存入字典的只有变量名字符串,无法拿到实际的参数值。

解决方案

方案1(推荐):直接从argparse返回对象动态取值

不需要额外定义port1~port3的中间变量,直接通过getattr方法读取args的动态属性即可,代码更精简稳定:

import os
import argparse

parser = argparse.ArgumentParser()
my_dict = {}
for i in range(1,4):
    parser.add_argument("-portid"+str(i), help="Provide Port id", required=True)
    
args = parser.parse_args()
# 直接动态获取args的属性值
for i in range(1,4):
    my_dict["portId"+str(i)] = getattr(args, f"portid{i}")

print(my_dict)

方案2:通过局部变量字典取值

如果你的业务逻辑必须保留port1~port3的独立变量定义,可以通过locals()获取当前作用域的局部变量集合,动态读取对应变量的值:

import os
import argparse

parser = argparse.ArgumentParser()
my_dict = {}
for i in range(1,4):
    parser.add_argument("-portid"+str(i), help="Provide Port id", required=True)
    
args = parser.parse_args()
port1 = args.portid1
port2 = args.portid2
port3 = args.portid3
print(port3)

# 从局部变量集合中取值
for i in range(1,4):
    my_dict["portId"+str(i)] = locals()[f"port{i}"]
print(my_dict)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 03:06:06