Задача на ключи словаря

Имеется такой код, где мы делаем 5 записей в словарь: Давайте решим ее. Для ключа словаря нам важны две вещи: Хэш hash(key) – ключи с разными хэшами дадут нам разные записи в словаре. Равенство ключей – если хэши равны, то проверяется равенство ключей (==), и если и они равны, то считается, что ключ тот же…

О поиске в словарях

При разборе вложенных структур из словарей и списков (например, конфигов), удобно пользоваться блоком try-except. Ловим IndexError, если индекс отсутствует в списке, и KeyError, если ключ отсутствует в словаре. Однако, лучше ловить LookupError, который является предком обоих исключений: Пример: Независимо от того, не найден ли будет какой-то ключ словаря или индекс списка – будет поймана одна…

Munch – вседозволенный объект

Привет. Хочу познакомить вас библиотекой Munch, которая является форком более старой библиотеки Bunch. Рассмотрим суть проблемы, которую она решает. Задать атрибуты объекта, не описывая их по одному в конструкторе. Легче понять на примере: Видно, что object нам не поможет. Но в Python 3 можно сделать пустой класс, это не вызовет ошибки: И в принципе этого…

Генераторные выражения

Мы говорили про map и itertools.starmap, но я тут подумал… Зачем они, если есть замечательные генераторные выражения: Они умеют делать: генераторы, списки list, словари dict и множества set. Поддерживают вложенные циклы для обработки многомерных данных Умеют фильтровать данные, как filter Обладают лаконичным и понятным синтаксисом По-английски они называются в зависимости от типа данных на выходе:…

Удаление ключа из словаря

Словарь (dict) – изменяемый тип в Python. Из словаря можно легко удалить ключ оператором del: Что если ключа не окажется в словаре? Ответ: исключение – KeyError: Конечно, можно сделать так: Или даже так: Однако, есть способ удалить ключ (которого возможно нет) в одну строчку: Обратите внимание, что второй аргумент None обязателен. Кроме того, метод pop…