libb.flatten
- flatten(kv, prefix=None)[source]
Flatten a dictionary, recursively flattening nested dicts.
Unlike more_itertools.flatten, this operates on dictionaries rather than iterables. It recursively flattens nested dict keys by joining them with underscores (e.g.,
{'a': {'b': 1}}becomes('a_b', 1)), whereas more_itertools.flatten removes one level of nesting from a list of lists.- Parameters:
- Yields:
Tuples of (flattened_key, value).
Example:
>>> data = [ ... {'event': 'User Clicked', 'properties': {'user_id': '123', 'page_visited': 'contact_us'}}, ... {'event': 'User Clicked', 'properties': {'user_id': '456', 'page_visited': 'homepage'}}, ... {'event': 'User Clicked', 'properties': {'user_id': '789', 'page_visited': 'restaurant'}} ... ] >>> from pandas import DataFrame >>> df = DataFrame({k:v for k,v in flatten(kv)} for kv in data) >>> list(df) ['event', 'properties_user_id', 'properties_page_visited'] >>> len(df) 3