假设我有一个深度为N的嵌套字典。如何将每个内部嵌套字典转换为一个简单的命名空间
example_input = {key0a: "test", key0b: {key1a: {key2a: {...keyNx}, key2b: "test"} ,key1b: "test"}}
example_output = SimpleNamespace(key0a: "test", key0b: SimpleNamespace(key1a: SimpleNamespace(key2a: SimpleNamespace(...keyNx), key2b: "test"), key1b: "test"))
如果给出了示例输入dict,是否有更好的替代方法使字典的键可以按点表示法访问(例如示例输入.key0a),而无需外部依赖关系
仅回答您的第二个(最后一个)问题-这是一个热门话题,有许多不同的项目(非标准)使您的字典成为点符号对象
例如这个-attrdict。通过
pip install attrdict
安装它用法示例:
Try it online!
使用递归
输出:
基于mujjija的解决方案,这就是我想到的。完整代码如下
如果我没有弄错的话,Python不支持尾部调用优化。因此,在Python中使用深层递归函数时请小心。对于小的例子,它应该是好的
更新
另一个版本
object_hook
有筑巢的魔力。我更喜欢这个版本,因为我可以直接将它们提供给jinja2
模板引擎相关问题 更多 >
编程相关推荐