Курс 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. Очистка списка от False, None, 0, «»
  2. Подсказки типов в Python
  3. Ошибка NotImplemented в Python
  4. Импорт модулей и пакетов в Python
  5. Создание матрицы в Python
  6. Логирование с Logzero
  7. Комментарии в Python
  8. Профилирование кода
  9. Хэш-функции и метод цепочек
  10. Измерение времени выполнения кода
  11. Работа со словарями
  12. Управление памятью в Python
  13. Расчет времени выполнения
  14. Создание Telegram-бота на Python
  15. Объединение итераторов
  16. Работа с CSV файлами в Python
  17. Оператор zip в Python
  18. Переворот списка в Python
  19. Асинхронное программирование с asyncio
  20. Создание новых списков в Python
  21. Модуль inspect: получение информации о объектах
  22. Работа с датой и временем в Python
  23. Декораторы в Python
  24. Оператор is в Python
  25. Хранение переменных в Python.
  26. Удаление ресурса в Python
  27. Возведение в квадрат с помощью itertools
  28. Изменения в обработке логических значений
  29. Измерение времени выполнения с помощью time
  30. Работа со словарями в Python
  31. Преобразование документов в PDF с помощью Spire.Office
  32. Функция product() в Python
  33. Создание директории в Python
  34. Многоточие в Python
  35. Создание namedtuple списком полей
  36. Перегрузка операторов в Python
  37. Создание GUI на Tkinter
  38. Тестирование функции сложения
  39. Руководство по Pymorphy2
  40. Методы работы со списками
  41. Обход словаря в Python
  42. Методы classmethod и staticmethod
  43. Настройка вывода в Numpy
  44. Перемещение и удаление файлов в Python
  45. Подсчет элементов в списке с Counter
  46. Работа с прокси в Python

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