Курс 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. Функция sleep() в Python
  3. Пропуск начальных строк с помощью dropwhile()
  4. Подсчет частоты элементов с Counter
  5. Работа с defaultdictами в Python
  6. Перевод текста с Python Translator
  7. Наследование в программировании
  8. Оптимизация методов в Python 3.7
  9. Обработка исключений
  10. Создание словаря и множества
  11. Метод rmatmul для пользовательских матриц
  12. Построение графиков в терминале с bashplotlib
  13. Настройка вывода NumPy
  14. Работа с срезами в Python
  15. Роль ключевого слова self
  16. Создание namedtuple из словаря
  17. Подсказки при вводе данных в Python
  18. Управление виртуальными окружениями в Python
  19. Работа с CSV файлами в Python
  20. Поиск кода
  21. Оператор walrus в Python
  22. Именование переменных в Python
  23. Преобразование списка в словарь через генератор
  24. %pinfo: получение информации об объекте
  25. Операторы увеличения и уменьшения в Python
  26. История Python
  27. Обработка ошибок ввода данных
  28. Расчет времени выполнения
  29. Преобразование символов с помощью map
  30. Хеши в Python
  31. Оператор is в Python
  32. Проверка однородности элементов списка
  33. Отладка кода
  34. List Comprehension Tutorial
  35. Преобразование объекта в строку
  36. Добавление вложенных списков
  37. Декораторы в Python
  38. Хранение данных
  39. Создание и обучение модели с Keras
  40. Генераторы в Python
  41. Подсчет частотности элементов в Python
  42. enumerate() в Python для работы с индексами
  43. Векторизация в Python с NumPy.
  44. Извлечение аудио из видео
  45. Передача словаря через **kwargs

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