Python 在多级dict中获取和设置值的最佳实践

Python 在多级dict中获取和设置值的最佳实践,python,getter-setter,magic-methods,dictionary,Python,Getter Setter,Magic Methods,Dictionary,可能重复: 有这样一个多级指令: some_infomations = { "root":{ "sub":{ "more_deep":{ "not_enough": "Some value", "another": "bla..bla" } }, "more":{ "more_deep":{

可能重复:

有这样一个多级指令:

some_infomations = {
    "root":{
        "sub":{
            "more_deep":{
                "not_enough": "Some value",
                "another": "bla..bla"
            }
        },
        "more":{
            "more_deep":{
                "not_enough": "Some value",
                "another": "bla..bla"
            }
        }
    }
}

我有一个碎屑串,比如
root.sub.more\u deep。另一个
,有没有一个简单而好的方法来做这项工作,就像
eval(“一些信息[root.sub.more\u deep.other]=some\u value”)

在这里发布主要是为了好玩,但也因为
reduce
比大多数人认为的要有用得多

from operator import getitem
def dot_get(your_dict,s):
    return reduce(getitem, s.split('.'), your_dict)  

d = {'foo': {'bar': {'baz': 1}}}
print dot_pull(d,'foo.bar.baz')
EDIT——显然这就是OP在上一个问题中的做法,我没有仔细阅读,尽管OP使用了
dict.get
,这将抑制一个键错误

要设置项目,需要拆分最后一个元素,并获取其上方的元素:

def dot_set(your_dict,s,v):
    head,tail = s.rsplit('.',1)
    dot_get(yourdict,head)[tail] = v

类似问题:谢谢您的评论。:-)我不知道如何正确设置答案的格式,我已将其粘贴在此处: