modified: README.rst new file: nested_lookup/__init__.py renamed: nested_lookup.py -> nested_lookup/nested_lookup.py modified: setup.py
25 lines
826 B
Python
25 lines
826 B
Python
from six import iteritems
|
|
|
|
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 iteritems(document):
|
|
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
|
|
|