Курс 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. Визуализация пропусков данных
  3. Progress с библиотекой tqdm
  4. Эффективная конкатенация строк с использованием join()
  5. Обработка исключений
  6. Установка библиотек в Python
  7. Анонимные функции в Python
  8. Генераторы словарей и множеств
  9. Функции с дополнением
  10. Генераторы в Python
  11. Присвоение значений переменным в Python
  12. Удаление falsy-значений из списка с помощью filter
  13. Работа с CSV файлами в Python
  14. Вывод сложных структур данных с помощью pprint
  15. Разбиение текста в Python
  16. Декораторы в Python
  17. Повторение элементов в Python
  18. Очистка списка от False, None, 0, «»
  19. Установка и использование pyshorteners
  20. Частичное применение функций в Python
  21. Метод rxor для операции побитового исключающего «или»
  22. Работа с файлами в Python
  23. Удаление файлов с shutil.os.remove()
  24. Импорт модуля из другого каталога
  25. Транспонирование матрицы в Python
  26. Генераторы по генератору
  27. Python 3.12: переиспользование кавычек
  28. Операторы увеличения и уменьшения в Python
  29. Поиск уникальных элементов строкой в Python
  30. Копирование в Python
  31. Парсинг статей с Newspaper3k
  32. Модуль xkcd: добавление юмора в Python
  33. Перезагрузка оператора в Python
  34. Работа с буфером обмена на Python
  35. Форматирование кода на Python
  36. Избегайте изменяемых аргументов
  37. Метод setitem в Python
  38. *args и **kwargs в Python
  39. Комментарии в Python.
  40. Декораторы классов
  41. Python enumerate() использование
  42. ROT13 Шифр Цезаря в Python
  43. Работа с getopt
  44. Функция pow() — возвести число в степень
  45. Профилирование данных с Pandas.
  46. Фильтрация списка от «ложных» значений
  47. Обновление и получение данных в SQLite
  48. Однострочники Python
  49. CLI-инструмент howdoi

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