python - Python 从动态列表中获取键/值
问题描述
我正在使用 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
推荐阅读
- r - 如何使用与相对丰度图相对应的颜色标签制作复合图例?
- javascript - 在没有 USB 和 Expo 的 iPhone 上执行 react-native 调试代码
- python - 避免 NumericProperty 的绑定递归
- sql - 如何从站点的 sql 数据库中删除病毒?
- xpath - 如何使用 xpath 获取 youtube 标题
- java - 每次循环确定一个新点(带坐标),停在起点
- xml - 生成 xml 时缺少 xml 声明/标头?
- angular - 角度路由嵌套组件不起作用
- python - 带有诗歌的 Python 命名空间包
- javascript - 根据条件在对象内添加数据