Время прочтения: 3 мин.

Все пользователи Python время от времени используют в процессе написания кода встроенные словари, кто-то редко, а кто-то в каждом своем проекте.

Это удобный инструмент для хранения пар сущностей “key – value”. Из-за своей структуры поиск по словарю осуществляется очень быстро и сам объект словаря требует минимум памяти.

Однако работа с большими многоуровневыми словарями может быть затруднительной.

В решении многих сложностей, возникающих при работе со словарями может быть использован Benedict —  новая библиотека на Python, разработанная в 2022 году итальянским разработчиком Fabio Caccamo.

Установка библиотеки абсолютно стандартна:

pip install python-benedict

Создание объекта словаря benedict:

from benedict import benedict
d = benedict()

Benedict наследуется от встроенного типа dict, означает полную совместимость с существующими словарями.

Главным преимуществом benedict является поддержка keylist и keypaths. Это значительно упрощает доступ к значениям в сложных словарях.

Добавление элементов в словарь может быть осуществлено как с помощью указания списка последовательных элементов, куда нужно записать новый элемент:

d['prof','name'] = 'name'
d['prof','sur'] = 'sur'
Так и обозначив адрес объекта в одну строку, разделяя элементы разделителем, по умолчанию – «.» (точка)
d['prof.index'] = 'index'
d['prof.index.1'] = 'index1'
d['prof.index.2'] = 'index2'

Поддержка keypaths существенно упрощает поиск по словарю

'prof.index' in d

Так же реализована удобная функция графического представления иерархии словаря

s = benedict.dump(d.keypaths())

Кроме того, в benedict реализована возможность изменения имени ключа

d.rename('prof.name','prof.new')

Метод move также позволяет изменить имя ключа. При существовании ключа, значения будут перезаписаны.

d.move('prof.name','prof.sur')

В завершении можно добавить, что словарь benedict может получать и сохранять информацию в различных форматах, таких как, csv, json, pickle, xml, yaml и ряде других.

Benedict имеет несколько функций-дополнений, которые существенно упрощают работу со сложными словарями и рекомендованы для применения в рабочем процессе.