Курс 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. Объединение, распаковка и деструктуризация
  2. Функция product() из itertools
  3. Именованные кортежи в Python
  4. Слияние словарей в Python 3.9
  5. Поиск самого частого элемента
  6. Работа с файловой системой в Python
  7. Управление доступом к модулю
  8. Цикл for в Python
  9. Декоратор Ajax required
  10. Копирование и вставка текста в Python
  11. UserString в Python
  12. Генераторы в Python
  13. Метод rrshift для пользовательских объектов
  14. Python: Фильтрация списков с помощью filter()
  15. Функции map, filter, reduce
  16. Работа с эмодзи в Python
  17. Метод __irshift__ для Python
  18. Разделение строки с помощью re.split()
  19. Роль ключевого слова self
  20. Оболочка Python
  21. Переопределение метода __lshift__
  22. Сумма элементов списка
  23. Разделение строки в Python
  24. Чтение и запись TOML-конфигов
  25. Проверка ввода с помощью isdigit
  26. Переменные в Python
  27. Конкатенация строк с помощью join()
  28. Работа с коллекциями Python
  29. Создание словаря и множества
  30. Вложенные циклы в Python
  31. Форматирование заголовков в Python
  32. Установка User-Agent в Python
  33. Работа с итераторами в Python
  34. Генераторы в Python
  35. Удаление элемента по индексу
  36. Математические функции в Python
  37. Функции map() и reduce() в Python
  38. Работа с JSON в Python
  39. Генератор списка в Python
  40. Поиск самого длинного слова в списке с использованием max()
  41. Бинарный поиск
  42. Генераторные выражения и islice.
  43. Оператор walrus в Python
  44. Изменение объектов в Python
  45. Копирование файлов с shutil()

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