Курс 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. Управление контекстом с помощью декоратора contextmanager
  2. Работа с кортежами в Python
  3. Многострочные комментарии в Python
  4. Комментарии в Python
  5. Получение ID текущего процесса
  6. Определение локальных переменных в Python
  7. Обработка ошибок ввода данных
  8. Генераторы в Python
  9. Оператор == в Python
  10. Работа с очередями в Python
  11. Отправка поздравлений по дню рождения
  12. Итерации в Python
  13. Искажение имен в Python
  14. Создание словаря через dict comprehension
  15. Декоратор total_ordering для сравнения объектов
  16. Создание пар из последовательностей
  17. Оператор in для Python
  18. Combobox в Tkinter
  19. Лямбда-функции в Python
  20. Измерение времени выполнения кода в Python
  21. Анонимные функции в Python
  22. Объединение словарей в Python
  23. Уникальность ключей в словаре
  24. Условные выражения в Python
  25. Python Аргументы по умолчанию
  26. Декораторы классов
  27. Модуль subprocess: запуск внешних команд
  28. Форматирование чисел в Python
  29. Обработка исключений в Python
  30. Функции в Python
  31. Декораторы в Python
  32. Сортировка с помощью key
  33. Инвертирование словаря
  34. Сортировка в Python
  35. Логирование с Logzero
  36. Создание класса в Python
  37. Поиск кода
  38. Работа с кортежами в Python
  39. Анализ текста на русском языке с помощью Pymystem3
  40. Метод Self в Python
  41. Склеивание строк без циклов
  42. Декораторы с аргументами
  43. Проблема сравнения словарей
  44. Использование двоеточия в Python

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