def flatten_dict(data, sep='_', prefix=''):
"""
Flattens a nested dictionary into a single-level dictionary.
Args:
data (dict): The nested dictionary to flatten.
sep (str, optional): Separator for keys. Defaults to '_'.
prefix (str, optional): Prefix for keys. Defaults to ''.
Returns:
dict: A flattened dictionary.
"""
items = []
for k, v in data.items():
new_key = prefix + sep + k if prefix else k # Construct new key
if isinstance(v, dict):
items.extend(flatten_dict(v, sep=sep, prefix=new_key).items()) # Recursive call for nested dicts
else:
items.append((new_key, v)) # Add key-value pair
return dict(items) # Convert list of tuples to dictionary
if __name__ == '__main__':
# Example usage
nested_data = {
'name': 'John Doe',
'age': 30,
'address': {
'street': '123 Main St',
'city': 'Anytown',
'zip': '12345'
},
'phone_numbers': [
{'type': 'home', 'number': '555-1234'},
{'type': 'work', 'number': '555-5678'}
]
}
flattened_data = flatten_dict(nested_data)
print(flattened_data)
Add your comment