我有几个变量,其中一些我需要在某种条件下改变。
test = 'foo'
a, b, c = None, None, None
if test == 'foo':
a = 1
elif test == 'bar':
b = 2
else:
c = 3
我想使用here描述的dict方法,但是如何修改它以更改多个变量?我希望它能像这样工作:
options = {'foo': ('a',1), 'bar': ('b',2)}
reassign_variables(options,test, ('c',3))
或者,如果不创建一个函数并单独对所有条件进行硬编码,这是不是可以做到?
答案 0 :(得分:2)
这将改变模块全局命名空间中的变量
>>> options = {'foo': ('a',1), 'bar': ('b',2)}
>>>
>>> def reassign_variables(options, test, default):
... var, val = options.get(test, default)
... globals()[var] = val
...
>>>
>>> a, b, c = None, None, None
>>> reassign_variables(options, "foo", ('c',3))
>>> a,b,c
(1, None, None)
>>> reassign_variables(options, "baz", ('c',3))
>>> a,b,c
(1, None, 3)
>>>
答案 1 :(得分:0)
如果我说得对,请使用dict.update
这样的方法:
test = 'foo'
options.update({test:('a',12)})
答案 2 :(得分:0)
您可以将值重新调回变量
a,b,c = None, None, None
options = {'foo': (1,b,c), 'bar': (a,1,c)}
default = (a,b,1)
test = 'foo'
a,b,c = options.get(test,default)
答案 3 :(得分:-1)