Курс Python → Преобразование многоуровневого словаря

Для начала, давайте определим, что такое многоуровневый словарь. Это структура данных, которая содержит вложенные словари или другие структуры данных в качестве значений. Например, у нас может быть словарь, в котором ключами являются строки, а значениями — другие словари или списки. Наша задача — преобразовать такую структуру в плоский словарь, где все элементы будут иметь один уровень вложенности.

Для этого мы можем написать рекурсивную функцию, которая будет перебирать все элементы входного словаря и добавлять их в новый плоский словарь. Когда функция встречает вложенный словарь, она вызывает саму себя для обработки этого вложенного словаря. Таким образом, мы можем обойти все уровни вложенности и преобразовать структуру в плоский вид.


def flatten_dict(d: dict) -> dict:
    flat_dict = {}
    for key, value in d.items():
        if isinstance(value, dict):
            value = flatten_dict(value)
            for subkey, subvalue in value.items():
                flat_dict[key + '.' + subkey] = subvalue
        else:
            flat_dict[key] = value
    return flat_dict

# Пример использования функции
nested_dict = {'a': 1, 'b': {'c': 2, 'd': 3}}
flat_dict = flatten_dict(nested_dict)
print(flat_dict)

Для улучшения читаемости и безопасности кода мы можем использовать type hinting. Это позволит явно указать типы аргументов и возвращаемого значения функции. Также стоит учитывать, что при работе с рекурсивными функциями необходимо учитывать базовый случай, чтобы избежать бесконечной рекурсии. В нашем случае, базовым случаем может быть проверка на то, что значение не является словарем.

Твои коллеги будут рады, поделись в

Автор урока

Дмитрий Комаровский
Дмитрий Комаровский

Автоматизация процессов
в КраснодарБанки.ру

Другие уроки курса "Python"

  1. Лямбда-функции в Python
  2. Сортировка с помощью параметра key
  3. Создание списка через итерацию
  4. Глобальные переменные в Python
  5. Создание функций с произвольным количеством аргументов
  6. lru_cache оптимизация функций
  7. Оператор объединения словарей
  8. Библиотека Rich: форматирование текста
  9. Идентификатор объекта в Python
  10. Декораторы в Python
  11. Поиск индекса элемента
  12. Объединение строк с помощью метода join
  13. Объединение кортежей в Python
  14. Возврат нескольких значений из функции
  15. Импорт классов из другого файла
  16. Обработка ошибок ввода данных
  17. Методы работы со строками в Python
  18. Тип CodeType в Python.
  19. Атрибуты объекта в Python
  20. Метод gt в Python
  21. Сравнение объектов в Python
  22. Декораторы в Python
  23. Вычисление времени выполнения
  24. Методы list в Python
  25. Фильтрация элементов с помощью islice
  26. Приближение чисел в Python
  27. Функция с *args.
  28. Комплексные числа в Python
  29. Работа с контекстными менеджерами
  30. Копирование объектов в Python
  31. Работа с пользовательским вводом
  32. PATCH-запрос с библиотекой requests
  33. Работа с множествами в Python
  34. Разделение строки с регулярными выражениями
  35. Работа с индексами списков
  36. Приоритет операций в Python
  37. Удаление эмодзи с помощью pandas
  38. Принципы Zen of Python
  39. Непрерывная проверка в Python
  40. Создание новых функций через partial
  41. Форматирование строк в Python.
  42. Получение обратного списка чисел
  43. Преобразование строки в число
  44. Открытие и редактирование скриптов Python
  45. Создание GUI с Tkinter: Entry
  46. Работа с изменяемыми коллекциями
  47. Методы в Python

Marketello читают маркетологи из крутых компаний