从arg列表中用Python创建一个字典

时间:2015-09-29 07:27:25

标签: python

我想从arg_list创建一个词典:

arg_list = "--config=pools_issuance.config --current_mm=9 --current_yy=15 --agency_id='FH'"

E.g:

input = {}

for arg in arg_list:
   x = arg.split(' --')
   input[x[0]] = x[0]

这不起作用并且给了我:

{' ': ' ',
 "'": "'",
 '-': '-',
 '.': '.',
 '1': '1',
 '5': '5',
 '9': '9',
 '=': '=',
 'F': 'F',
 'H': 'H',
 '_': '_',
 'a': 'a',
  ...
 'y': 'y'}

我不明白为什么。

1 个答案:

答案 0 :(得分:0)

您应该使用标准argparse

但是,如果您不想,请继续阅读。

>>> arg_list = "--config=pools_issuance.config --current_mm=9 --current_yy=15 --agency_id='FH'"

你的主要问题是你遍历字符串中的每个字符:

>>> for arg in arg_list:
...     print arg
-
-
c
o
n
f
i
...

我们可以根据空格分割字符串:

>>> arg_list.split()
['--config=pools_issuance.config',
 '--current_mm=9',
 '--current_yy=15',
 "--agency_id='FH'"]

然后为每个参数剥离' - ',并在'='上拆分以获取键值对:

>>> [arg.strip('--').split('=') for arg in arg_list.split()]
[['config', 'pools_issuance.config'],
 ['current_mm', '9'],
 ['current_yy', '15'],
 ['agency_id', "'FH'"]]

然后将它们传递给字典构造函数:

>>> dict(arg.strip('--').split('=')
...      for arg in arg_list.split())
{'agency_id': "'FH'",
 'config': 'pools_issuance.config',
 'current_mm': '9',
 'current_yy': '15'}

您可能希望清除部分值,因为数字将是字符串,而agency_id将是包含引号的字符串:"'FH'"