nested-lookup/nested_lookup.py
Russell Ballestrini b530c0a586 first commit, working with tests.
new file:   .gitignore
	new file:   README.rst
	new file:   __init__.py
	new file:   nested_lookup.py
	new file:   setup.py
	new file:   test_nested_loopkup.py
2015-11-06 23:30:53 -05:00

23 lines
800 B
Python

def nested_lookup(key, document):
"""Lookup a key in a nested document, return a list of values"""
return list(_nested_lookup(key, document))
def _nested_lookup(key, document):
"""Lookup a key in a nested document, yield a value"""
if isinstance(document, list):
for d in document:
for result in _nested_lookup(key, d):
yield result
if isinstance(document, dict):
for k, v in document.iteritems():
if k == key:
yield v
elif isinstance(v, dict):
for result in _nested_lookup(key, v):
yield result
elif isinstance(v, list):
for d in v:
for result in _nested_lookup(key, d):
yield result