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_argsnargs='+' 设置。这是一个小例子:

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