试图用另一个"字典"更新字典。

时间:2014-10-16 13:14:52

标签: python python-2.7 dictionary

我在我的代码中定义了一个名为cfg的字典。

cfg = { 'debug': 1, 'verbose': 1, 'cfgfile': 'my.cfg' }

使用ConfigParser我解析一个配置文件,该文件可用于覆盖上面cfg中定义的硬编码值,并按如下方式合并:

config = SafeConfigParser()
config.read(cfg['cfgfile'])
cfg.update(dict(config.items('Main')))

以上都正常。

我现在调用一个使用optparse来解析命令行参数的函数。

def parseOptions():
    parser = OptionParser()
    parser.add_option("-d", "", dest="debug",        action="store_true",             default=False, help="enable additional debugging output")
    parser.add_option("-v", "", dest="verbose",      action="store_true",             default=False, help="enable verbose console output")

    (options, args) = parser.parse_args()

    return options

回到main()options在目视检查时似乎是字典:

options = parseOptions()
print options

{'debug': False, 'verbose': False}

当我尝试更新我的cfg字典时,我收到此错误:

cfg.update(dict(options))

输出:

Traceback (most recent call last):
  File "./myscript.py", line 176, in <module>
    cfg.update(dict(options))
TypeError: iteration over non-sequence

选项的类型是值的实例:

print "type(options)=%s instanceof=%s\n" % (type(options), options.__class__.__name__)

type(options)=<type 'instance'> instanceof=Values

如何使用cfg中的值更新我的options词典?

1 个答案:

答案 0 :(得分:2)

尝试使用vars()

options = parseOptions()
option_dict = vars(options)
cfg.update(option_dict)