Курс 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. Генераторы в Python
  3. Тестирование времени с Freezegun
  4. Объединение списков в Python
  5. Оператор break в Python
  6. Методы split() и join() — Python строк.
  7. Сортировка с параметром key
  8. Работа с итераторами в Python
  9. Блок try-except-else
  10. Объединение словарей в Python
  11. Работа с комплексными числами в Python
  12. Combobox в Tkinter
  13. Форматирование вывода с F-строками
  14. Избегайте ошибку FileNotFoundError
  15. Глобальные переменные в Python
  16. Метод join() для объединения элементов в строку.
  17. Работа с Requests для HTTP-запросов
  18. Методы обработки строк в Python
  19. Многоточие в Python
  20. Работа с атрибутом dict
  21. Строковое представление объектов
  22. Генератор чисел Фибоначчи
  23. Метод join() для объединения элементов
  24. Изменение списка срезом
  25. Big O оптимизация
  26. Списки в Python
  27. Генерация случайных чисел в Python
  28. Преобразование в float
  29. Преобразование строк в числа в Python
  30. Создание обратного итератора
  31. Подчеркивание в REPL
  32. Преобразование PowerPoint в PDF.
  33. Использование подчеркивания в REPL
  34. Декораторы в Python
  35. Работа с библиотекой xkcd
  36. Создание namedtuple списком полей
  37. Принципы Zen of Python
  38. PATCH-запрос с библиотекой requests
  39. Создание объекта timedelta
  40. lru_cache оптимизация функций
  41. Модуль subprocess: запуск внешних команд
  42. Генерация UUID в Python
  43. Нахождение хеша для бесконечности и NaN в Python
  44. Разработка Telegram-ботов
  45. Хешируемые ключи в Python
  46. Удаление URL-адресов в Python

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