Время прочтения: 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 имеет несколько функций-дополнений, которые существенно упрощают работу со сложными словарями и рекомендованы для применения в рабочем процессе.