1. def flatten_dict(data, sep='_', prefix=''):
  2. """
  3. Flattens a nested dictionary into a single-level dictionary.
  4. Args:
  5. data (dict): The nested dictionary to flatten.
  6. sep (str, optional): Separator for keys. Defaults to '_'.
  7. prefix (str, optional): Prefix for keys. Defaults to ''.
  8. Returns:
  9. dict: A flattened dictionary.
  10. """
  11. items = []
  12. for k, v in data.items():
  13. new_key = prefix + sep + k if prefix else k # Construct new key
  14. if isinstance(v, dict):
  15. items.extend(flatten_dict(v, sep=sep, prefix=new_key).items()) # Recursive call for nested dicts
  16. else:
  17. items.append((new_key, v)) # Add key-value pair
  18. return dict(items) # Convert list of tuples to dictionary
  19. if __name__ == '__main__':
  20. # Example usage
  21. nested_data = {
  22. 'name': 'John Doe',
  23. 'age': 30,
  24. 'address': {
  25. 'street': '123 Main St',
  26. 'city': 'Anytown',
  27. 'zip': '12345'
  28. },
  29. 'phone_numbers': [
  30. {'type': 'home', 'number': '555-1234'},
  31. {'type': 'work', 'number': '555-5678'}
  32. ]
  33. }
  34. flattened_data = flatten_dict(nested_data)
  35. print(flattened_data)

Add your comment