给定一个字典,其中包含 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]
我认为没有迭代/递归就无法做到。
>>> 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')
>>>
使用标准字典,而不是迭代?不。
没有迭代,不确定。有了,您可以使用以下内容:
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)