是否有可能在没有迭代的情况下获得孙子dict键的值

时间:2013-07-12 18:51:06

标签: python xpath

给出一个包含n个词典的词典,其中包含n个词典等。

foo = dict({"foo" : {"bar": {"baz": "some value"}}}

假设baz可能位于foo中的任何位置,但它只会出现一次,是否可以在没有迭代的情况下查找键“baz”的值?我在想xpath-ish。即".//baz"

if "baz" in foo: 
    bazVal = dict[path][to][baz] 

3 个答案:

答案 0 :(得分:1)

如果没有迭代/递归,我认为你无法做到。

>>> def search(d, baz):
...     if baz in d:
...         return d[baz]
...     for value in d.values():
...         if isinstance(value, dict):
...             ret = search(value, baz)
...             if ret:
...                 return ret
...
>>>
>>> foo = {"foo" : {"bar": {"baz": "some value"}}}
>>> search(foo, 'baz')
'some value'
>>> search(foo, 'spam')
>>>

答案 1 :(得分:0)

使用标准字典,而不是迭代?否。

答案 2 :(得分:0)

没有迭代,不确定。使用,您可以使用以下内容:

 d = dict({"foo" : {"bar": {"baz": "some value"}}})
 def myprint(d):
   for i in d.iteritems():
     if isinstance(i, dict):
       myprint(i)
     else:
       print i

 myprint(d)