【问题标题】:How to initialize a SimpleNamespace from a dict [duplicate]如何从字典初始化 SimpleNamespace [重复]
【发布时间】:2018-10-22 02:15:03
【问题描述】:

我确定这一定很简单,但我找不到答案。

我有一本像这样的字典:

d = {'a': 1, 'b':2}

我想通过点符号访问它,例如:d.a

SimpleNamespace 就是为此而设计的,但我不能只将 dict 传递给 SimpleNamespace 构造函数。 我得到错误:TypeError: no positional arguments expected

如何从字典初始化 SimpleNamespace?

【问题讨论】:

    标签: python python-3.x dictionary


    【解决方案1】:

    使用**kwargs call syntax 传入字典以将字典解压缩为单独的参数:

    SimpleNamespace(**d)
    

    这会将d 中的每个键值对作为单独的关键字参数应用。

    相反,类定义shown in the Python documentation__init__ 方法中密切相关的**kwargs parameter definition 将传递给类的所有关键字参数再次捕获到单个字典中。

    演示:

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-14
    • 2014-09-23
    • 2017-11-15
    • 2018-07-14
    • 1970-01-01
    • 1970-01-01
    • 2018-05-02
    • 2023-03-30
    相关资源
    最近更新 更多