python - 如何将字典映射转换为 'integer aliasing'

标签 python

我将如何完成以下任务?

>>> 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/

相关文章:

python - 子类化 python unittest.Testcase,调用相同的 main

python 帮助 >> 模块给出段错误 - 如何修复?

python - 你如何解包不同长度的嵌套列表?

python - 创建一个 python 函数,该函数采用初始猜测和参数来生成以单个值终止的猜测

python - 最初在 Django-Form 中填充 FileField

python - matplotlib 和seaborn : ValueError: Supply a 'c' kwarg or a 'color' kwarg but not both; they differ but their functionalities overlap

python - 读取从 selenium 检索到的 soup 中的 html 源代码

python - 如何检查具有列表或字典的元组是否为空

python - subplot2grid 与 seaborn 覆盖相同的斧头

python - Pandas 数据框根据索引和列值删除行