move nested_lookup into a module
modified: README.rst new file: nested_lookup/__init__.py renamed: nested_lookup.py -> nested_lookup/nested_lookup.py modified: setup.py
This commit is contained in:
parent
564f55a507
commit
825f5ff28f
4 changed files with 3 additions and 2 deletions
1
nested_lookup/__init__.py
Normal file
1
nested_lookup/__init__.py
Normal file
|
|
@ -0,0 +1 @@
|
|||
from nested_lookup import nested_lookup
|
||||
25
nested_lookup/nested_lookup.py
Normal file
25
nested_lookup/nested_lookup.py
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
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
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue