Python 使用 ArgumentParser 将 List[str] 转换为 Dict[str, str]
Python convert List[str] to Dict[str, str] using ArgumentParser
我需要解析命令行参数 - 将 List[str]
转换为 Dict[str, str]
['key1=value1', 'key2=value2'] -> {key1: value1, key2:value2}
我使用以下代码:
parser.add_argument(
'--model-config',
nargs='+',
type=model_config_str_to_dict
)
其中model_config_str_to_dict(model_config: List[str])
是一个将list转换为dict的函数。但是 List[str]
我得到 model_config 参数的 str
。
我的问题是如何解析 --model-config 参数以将其转换为字典?
type
参数应用于 --model-config
之后的每个输入,在 之前它们被附加到存储在解析参数中的列表中属性 .model_config
。换句话说,model_config
的值将是List[model_config_str_to_dict(mc_arg)]
,而不是model_config_str_to_dict(List[mc_arg])
举个例子:
import argparse
def model_config_split(s):
k, v = s.split('=', 1)
return (k, v)
parser = argparse.ArgumentParser()
parser.add_argument( '--model-config',
nargs='+',
type=model_config_str_to_dict)
args = parser.parse_args(['--model-config', 'key1=value1', 'key2=value2'])
print(args.model_config)
# prints:
# [('key1', 'value1'), ('key2', 'value2')]
如果要将其转换为字典,可以在 解析参数后进行。
args.model_config = dict(args.model_config)
print(args.model_config)
# prints:
# {'key1': 'value1', 'key2': 'value2'}
我需要解析命令行参数 - 将 List[str]
转换为 Dict[str, str]
['key1=value1', 'key2=value2'] -> {key1: value1, key2:value2}
我使用以下代码:
parser.add_argument(
'--model-config',
nargs='+',
type=model_config_str_to_dict
)
其中model_config_str_to_dict(model_config: List[str])
是一个将list转换为dict的函数。但是 List[str]
我得到 model_config 参数的 str
。
我的问题是如何解析 --model-config 参数以将其转换为字典?
type
参数应用于 --model-config
之后的每个输入,在 之前它们被附加到存储在解析参数中的列表中属性 .model_config
。换句话说,model_config
的值将是List[model_config_str_to_dict(mc_arg)]
,而不是model_config_str_to_dict(List[mc_arg])
举个例子:
import argparse
def model_config_split(s):
k, v = s.split('=', 1)
return (k, v)
parser = argparse.ArgumentParser()
parser.add_argument( '--model-config',
nargs='+',
type=model_config_str_to_dict)
args = parser.parse_args(['--model-config', 'key1=value1', 'key2=value2'])
print(args.model_config)
# prints:
# [('key1', 'value1'), ('key2', 'value2')]
如果要将其转换为字典,可以在 解析参数后进行。
args.model_config = dict(args.model_config)
print(args.model_config)
# prints:
# {'key1': 'value1', 'key2': 'value2'}