Курс 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. Использование type hints
  3. Получение текущей даты и времени с помощью datetime
  4. Копирование и вставка текста в Python
  5. Функции all() и any() в Python
  6. Замыкания в Python
  7. Оператор Walrus: правильное использование
  8. Работа с файлами в Python
  9. Фильтрация списка чисел
  10. Модуль inspect
  11. Pillow: работа с изображениями
  12. Библиотека itertools: объединение списков
  13. Транспонирование матрицы
  14. JMESPath в Python
  15. Работа с collections в Python
  16. UserList в Python: Описание и примеры использования
  17. Работа с библиотекой xkcd
  18. Оптимизация гиперпараметров с Scikit Optimize
  19. Генерация строк с .join()
  20. Установка и использование Python-dateutil
  21. Исправление ошибки NameError
  22. Циклы в Python
  23. Работа с getopt
  24. Сравнение неупорядоченных списков
  25. Именованные срезы в Python
  26. Выход из профиля в Django
  27. Принципы LSP и ISP в Python
  28. Управление импортом в Python
  29. Проверка файла .py на синтаксис.
  30. Работа с collections в Python.
  31. Генераторы в Python
  32. Операция += для списков
  33. Логирование с Logzero
  34. Функции map, filter, reduce
  35. Проверка существования переменной с оператором :=
  36. Объединение словарей в Python
  37. Проверка надежности пароля на Python
  38. Работа с итераторами через срезы
  39. Аннотации типов в Python
  40. Названия переменных
  41. Сортировка списка по индексам
  42. Работа с изменяемыми списками
  43. Метод Self в Python
  44. Отладка утечек памяти в Python
  45. Метод classmethod
  46. Скачать видео с YouTube
  47. Руководство по Pymorphy2

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