Курс 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. Работа с IP-адресами в Python
  2. Обработка элементов в Python
  3. Определение размера папок в Python
  4. Обработка исключений
  5. Лямбда-функции в defaultdict
  6. Работа с эмодзи в Python
  7. Перетасовка списков в Python
  8. Сортировка и обратный порядок
  9. Непрерывная проверка в Python
  10. Защита данных в Python
  11. Отрицательные индексы списков в Python
  12. Ветвление выражения в Python
  13. Enum в Python
  14. Конкатенация строк с методом join()
  15. Функции-генераторы в Python
  16. Многоточие в Python
  17. Создание класса в Python
  18. Лямбда-функции в Python
  19. Роль ключевого слова self
  20. Работа с библиотекой requests
  21. Операторы += в Python
  22. Преобразование текста в речь с Python
  23. Основные операции с Numpy
  24. Открытие и редактирование скриптов Python
  25. Декоратор @override
  26. Сортировка в Python
  27. Enum в Python: создание и использование перечислений
  28. Построение графиков в терминале с bashplotlib
  29. Подсчет элементов в Python
  30. Pillow: работа с изображениями
  31. Генераторы в Python
  32. Метод join() для объединения элементов
  33. Форматирование строк с помощью f-строк
  34. F-строки в Python 3.8
  35. Поиск кода
  36. Преобразование символов с помощью map
  37. Методы работы со строками в Python
  38. Измерение времени выполнения кода с использованием time
  39. Создание вложенного генератора
  40. Работа с файлами и директориями в Python.
  41. Изменяемые и неизменяемые объекты
  42. Регулярные выражения: метод match
  43. Итерации в Python
  44. Генераторные функции в Python
  45. Метод lt для сортировки объектов
  46. Извлечение данных из JSON

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