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