我将如何完成以下任务?
>>> x={'NON_EPISODIC_MOVIE': 11}
>>> for k,v in x.items():
... k=v
...
>>> NON_EPISODIC_MOVIE
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'NON_EPISODIC_MOVIE' is not defined
基本上,我希望能够将字典映射转换为以下内容:
NON_EPISODIC_MOVIE = 11
...other items...
if content_type == NON_EPISODIC_MOVIE:
# do something
这将如何通过 dict 完成?
最佳答案
动态设置变量是一个真正可怕的想法,我数不清,但是 Python 给了你足够的绳索来搬起石头砸自己的脚!在交互式解释器提示下,它可能没有其他任何地方那么可怕......
>>> x={'NON_EPISODIC_MOVIE': 11}
>>> vars().update(x)
>>> NON_EPISODIC_MOVIE
11
适用于 Python 2 和 Python 3 交互式解释器。
更好的方法是将每一组这样的名称与值保存在一个类中,该类充当其命名空间。参见 http://code.activestate.com/recipes/52308-the-simple-but-handy-collector-of-a-bunch-of-named/ -- oldie, but goldie, 如果我自己这么说:-)。就说,例如
>>> movies = Bunch(**x)
并且全局变量将完好无损,但 movies.NON_EPISODIC_MOVIE
将为 11
,“命名空间污染”风险为零(动态设置全局变量的大问题)。 ..
关于python - 如何将字典映射转换为 'integer aliasing',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27832424/