0

给定一个字典,其中包含 n 个字典,其中包含 n 个字典等。

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

假设baz可能在任何地方,foo但它只会出现一次,是否可以不迭代查找键“baz”的值?我在想一些xpath-ish。IE ".//baz"

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

3 回答 3

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')
>>>
于 2013-07-12T19:02:34.710 回答
0

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

于 2013-07-12T19:02:41.473 回答
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)
于 2013-07-12T19:20:35.477 回答