convert dictionary entries into variables - python

后端 未结 6 1356
长发绾君心
长发绾君心 2020-11-28 22:58

Is there a pythonic way to assign the values of a dictionary to its keys, in order to convert the dictionary entries into variables? I tried this out:

>&g         


        
6条回答
  •  遥遥无期
    2020-11-28 23:38

    You can do it in a single line with:

    >>> d = {'a': 1, 'b': 2}
    >>> locals().update(d)
    >>> a
    1
    

    However, you should be careful with how Python may optimize locals/globals access when using this trick.

    Note

    I think editing locals() like that is generally a bad idea. If you think globals() is a better alternative, think it twice! :-D

    Instead, I would rather always use a namespace.

    With Python 3 you can:

    >>> from types import SimpleNamespace    
    >>> d = {'a': 1, 'b': 2}
    >>> n = SimpleNamespace(**d)
    >>> n.a
    1
    

    If you are stuck with Python 2 or if you need to use some features missing in types.SimpleNamespace, you can also:

    >>> from argparse import Namespace    
    >>> d = {'a': 1, 'b': 2}
    >>> n = Namespace(**d)
    >>> n.a
    1
    

    If you are not expecting to modify your data, you may as well consider using collections.namedtuple, also available in Python 3.

提交回复
热议问题