Mvd*_*vdD 2 python dictionary python-3.x
我相信这一定很简单,但我找不到答案.
我有一个字典,如:
d = {'a': 1, 'b':2}
Run Code Online (Sandbox Code Playgroud)
我想通过点表示法来访问它,例如: d.a
这SimpleNamespace是为此而设计的,但我不能将dict传递给SimpleNamespace构造函数.我收到错误:TypeError: no positional arguments expected
如何从字典初始化SimpleNamespace?
Mar*_*ers 12
使用**kwargs调用语法传入字典,将字典解压缩到单独的参数中:
SimpleNamespace(**d)
Run Code Online (Sandbox Code Playgroud)
这会将每个键值对d作为单独的关键字参数应用.
相反地,密切相关型号**kwargs参数定义在__init__类定义的方法Python文档中显示捕获传递给类成单个字典再次所有关键字参数.
演示:
>>> from types import SimpleNamespace
>>> d = {'a': 1, 'b':2}
>>> sn = SimpleNamespace(**d)
>>> sn
namespace(a=1, b=2)
>>> sn.a
1
Run Code Online (Sandbox Code Playgroud)