Друзья, продолжаем тему множеств и словарей.



Оба типа (set и dict) построены на структуре данных, которая называется хеш-таблица. Важное свойство хеш-таблиц состоит в том, что при некоторых разумных допущениях все три операции (добавление, удаление, поиск элемента) в среднем выполняются за константное время, то есть достаточно быстро. Именно поэтому множества и словари отлично подходят в ситуациях, когда нужно осуществлять частый поиск по данным.



Использование хеш-таблицы для реализации множеств и словарей приводит к неочевидному поведению в некоторых ситуациях. А именно: элементы, являющиеся равными с точки зрения оператора == и имеющие одинаковые хеш-значения, считаются идентичными с точки зрения множеств и словарей в Python. К таковым можно отнести значения False, 0, 0.0.



Например, если в множестве уже есть значение False и мы пытаемся добавить в него значения 0 или 0.0, то будем приятно удивлены тому, что новое значение не будет добавлено. Аналогичное поведение мы получим при работе со словарями. Тут ситуация еще интереснее. Скажем, пусть в словаре уже есть элемент с ключом False. При попытке добавить в словарь новый элемент с ключом 0 или 0.0 Python перезапишет значение по ключу False, при этом сам ключ останется исходным, то есть False. Внимательно проанализируйте картинку к этому посту.



Знали ли вы об этом поведении?



⚡️ В нашем новом курсе по ООП мы добавили урок, в котором рассказали об устройстве множеств и словарей. Это очень важный материал, освойте его полностью.



#полезныйматериал #set #dict