如何将命令行“key=value”参数转换为字典?

Posted

技术标签:

【中文标题】如何将命令行“key=value”参数转换为字典?【英文标题】:How to convert commandline "key=value" args to dictionary? 【发布时间】:2019-06-02 17:42:37 【问题描述】:

目前我需要实现一个 python 程序,它接受任意数量的命令行参数,例如

python myprog.py x1=12 y3=hello zz=60

并且需要将参数转换成字典之类的

"x1": "12", "y3": "hello", "zz": "60"

我尝试了 argparse 模块,但参数中的键(示例中的 x1、y3、zz)无法事先知道,而 argparse 似乎需要我单独添加参数键,所以我认为它不适合这种特定情况?

知道如何完成这种命令行参数到字典的转换,我是否遗漏了一些关于 argparse 的内容或者我需要使用其他东西吗?

【问题讨论】:

【参考方案1】:

您可以通过处理字符串来解析它。例如

import sys

kw_dict = 
for arg in sys.argv[1:]:
    if '=' in arg:
        sep = arg.find('=')
        key, value = arg[:sep], arg[sep + 1:]
        kw_dict[key] = value

【讨论】:

应该是for arg in sys.argv[1:]:,因为程序名永远不应该是一个有用的参数。此外,使用key, sep, value = arg.partition('=') 将允许值包含等号而不会导致异常。 注意到了。我想我的旧代码的主要问题是它不能处理多个等号。更新代码。

以上是关于如何将命令行“key=value”参数转换为字典?的主要内容,如果未能解决你的问题,请参考以下文章

Python将列表转换为具有多个键值的字典[关闭]

如何将文件作为列表/字典读取? [复制]

将带有嵌入括号的字符串转换为字典

如何将字符串转换为字典以从中检索一个值?

如何将字典的格式更改为 value1;key1;在 Python 3.6 中?

需求:一个页面中需要用到多个字典数据。用于下拉选项,同时,需要将其保存为json格式。以便于key,value的相互转换。记录在实现过程中踩的坑