Курс 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. Оператор «is not» в Python
  2. Создание списков в Python
  3. Использование функции product
  4. Оптимизация памяти в Python
  5. GitHub в Telegram: подписка на уведомления
  6. Динамическая типизация в Python
  7. Метод lt для сортировки объектов
  8. Управление экспортом элементов
  9. Подсчет часто встречающихся элементов
  10. Работа с пользовательским вводом
  11. Утечки переменных цикла в Python 3.x
  12. Тест скорости набора текста на Python
  13. Вычисление натурального логарифма в NumPy
  14. Форматирование кода на Python
  15. Форматирование данных с pprint
  16. Использование super() в Python
  17. Python: цикл for и оператор присваивания
  18. Метод pos в Python
  19. Область видимости переменных
  20. Основные операции с Numpy
  21. Изменение элемента списка
  22. Работа с YAML в Python
  23. Удаление ресурса в Python
  24. Numpy: объединение массивов
  25. Анализ текста на русском языке с помощью Pymystem3
  26. Значения по умолчанию в Python
  27. Удаление элемента по индексу в Python
  28. Декораторы для регистрации функций
  29. Оператор in для проверки наличия элемента
  30. Разделение строк в Python
  31. Философия Python
  32. Codecademy в Telegram
  33. Расширение операции побитового «и» в Python
  34. Работа с файлами в Python
  35. Создание словаря с значением по умолчанию
  36. Парсинг веб-страниц с Beautiful Soup
  37. Метод округления чисел
  38. Библиотека funcy: удобные утилиты
  39. Модуль subprocess: запуск внешних команд
  40. Введение в Python
  41. Работа с очередями в Python
  42. Идентификатор объекта в Python
  43. Работа с collections в Python
  44. Чтение и запись TOML-конфигов
  45. Оптимизация гиперпараметров с Scikit Optimize

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