Курс 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. Создание пустых функций и классов в Python
  4. Создание и обучение модели с Keras
  5. Многопоточность в Python
  6. Отладка производительности Python
  7. Проверка ввода с помощью isdigit
  8. Удаление символов новой строки в Python.
  9. Оператор «not» в Python
  10. Использование подчеркивания в REPL
  11. Работа с CSV файлами в Python
  12. Подсчет элементов в Python
  13. Обработка исключения UnboundLocalError
  14. Генератор данных в Keras
  15. SciPy: широкий функционал для математических операций
  16. Переопределение унарных операторов
  17. Библиотека sh: использование команд bash в Python
  18. Декораторы в Python
  19. Создание списка через итерацию
  20. Модуль pprint: улучшение вывода данных
  21. Отрицательные индексы списков
  22. Antigravity модуль
  23. split() — разделение строки
  24. Функция divmod() в Python
  25. Лямбда-функции в Python
  26. Разделение функций на этапы
  27. Сравнение def и lambda-функций
  28. Python и Монти Пайтон
  29. Вывод переменной и строки в Python
  30. Метод __irshift__ для Python
  31. Метод Enumerate() для списков
  32. Официальный канал Python в Telegram
  33. Вывод с переменной через запятую
  34. Метод __iand__ для пользовательских классов
  35. Работа с Requests для HTTP-запросов
  36. Вызов внешних программ в Python с помощью sh
  37. Логические операторы в Python
  38. Переворот строки с помощью срезов
  39. Преобразование документов в PDF с помощью Spire.Office
  40. Группы исключений в Python
  41. Оператор «or» в Python

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