Python 从动态列表中获取 Key/Value
Python Get Key/Value from Dynamic List
我正在使用 argparse 为我的脚本引入额外的参数。
如果传递一个参数,我可以从附加参数中获取键和值,就像这样:
parser = argparse.ArgumentParser(description='My app.')
parser.add_argument('-n', '--project-name', required=False, default='test')
args, remaining_argv = parser.parse_known_args()
set_config(remaining_argv[0], remaining_argv[1]
但我希望能够使用动态列表设置键和值。我可以通过除以 2 来获得参数的数量,但我需要遍历数组来设置键和值:
parser = argparse.ArgumentParser(description='My app.')
parser.add_argument('-n', '--project-name', required=False, default='test')
args, remaining_argv = parser.parse_known_args()
number_of_additional_arguments = int(len(remaining_args)/2)
for r in range(0,number_of_additional_arguments):
key = ??
value = ??
set_config(key, value)
如何动态设置键和值?
一种简单的方法是以某种格式对键值对进行“编码”。例如,逗号分隔。如果可以,则不需要 parse_known_args
,而是可以使用 parse_args
和 nargs='+'
设置。这是一个小例子:
import argparse
parser = argparse.ArgumentParser(description="My app.")
parser.add_argument("keyvals", type=str, nargs="+", help="Key value pairs")
args = parser.parse_args()
for keyval in list(args.keyvals):
key, val = keyval.split(",")
print(f"key: {key}, val: {val}")
调用此脚本会产生以下输出:
> python3 argparse_question.py a,b c,d e,f
key: a, val: b
key: c, val: d
key: e, val: f
我正在使用 argparse 为我的脚本引入额外的参数。
如果传递一个参数,我可以从附加参数中获取键和值,就像这样:
parser = argparse.ArgumentParser(description='My app.')
parser.add_argument('-n', '--project-name', required=False, default='test')
args, remaining_argv = parser.parse_known_args()
set_config(remaining_argv[0], remaining_argv[1]
但我希望能够使用动态列表设置键和值。我可以通过除以 2 来获得参数的数量,但我需要遍历数组来设置键和值:
parser = argparse.ArgumentParser(description='My app.')
parser.add_argument('-n', '--project-name', required=False, default='test')
args, remaining_argv = parser.parse_known_args()
number_of_additional_arguments = int(len(remaining_args)/2)
for r in range(0,number_of_additional_arguments):
key = ??
value = ??
set_config(key, value)
如何动态设置键和值?
一种简单的方法是以某种格式对键值对进行“编码”。例如,逗号分隔。如果可以,则不需要 parse_known_args
,而是可以使用 parse_args
和 nargs='+'
设置。这是一个小例子:
import argparse
parser = argparse.ArgumentParser(description="My app.")
parser.add_argument("keyvals", type=str, nargs="+", help="Key value pairs")
args = parser.parse_args()
for keyval in list(args.keyvals):
key, val = keyval.split(",")
print(f"key: {key}, val: {val}")
调用此脚本会产生以下输出:
> python3 argparse_question.py a,b c,d e,f
key: a, val: b
key: c, val: d
key: e, val: f