···11+# deep-filter
22+A simple package that filters out values from dicts/lists, including all dicts/lists nested within it.
33+44+# Usage
55+```python
66+from deep_filter import deep_filter
77+x = {
88+ 'nope': 69,
99+ 'yep': [
1010+ 69,
1111+ {'maybe': None},
1212+ 99
1313+ ]
1414+}
1515+def filter_func:
1616+ return value != 69
1717+result = deep_filter(x, filter_func)
1818+print(result)
1919+# {'yep': [{}, 99]}
2020+```
2121+2222+#### deep_filter(dict_or_list, filter_func=default_filter_func)
2323+- **dict_or_list**: A dictionary or list
2424+- **filter_func**: An optional callback function. It will take a value as an argument, and return `True` if the value will be kept and `False` if not. If omitted, `None` values will be filtered out.
2525+2626+Returns your dict or list, filtered.
+19-3
deep_filter.py
···11-def main():
22- print(55)
33- return 99911+def iterate(obj):
22+ if type(obj) == dict:
33+ return obj.items()
44+ elif type(obj) == list:
55+ return enumerate(obj)
66+77+def default_filter_function(value):
88+ return value != None
99+def deep_filter(obj, filter_func=default_filter_function):
1010+ if type(obj) == dict:
1111+ obj = {key:value for key,value in obj.items() if filter_func(value)}
1212+ elif type(obj) == list:
1313+ obj = [value for value in obj if filter_func(value)]
1414+1515+ for key, value in iterate(obj):
1616+ if type(value) not in [dict, list]:
1717+ continue
1818+ obj[key] = deep_filter(value)
1919+ return obj