Друзья, в прошлых постах мы с вами затрагивали множества (тип set) и словари (тип dict) для решения задач. Хочу поделиться интересной информацией об этих типах данных.



Мы знаем, что литерал {} создает пустой словарь, а не пустое множество. Вы когда-нибудь задумывались, почему это так?



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



У словарей есть метод keys(), который используется достаточно часто. Многие думают, что данный метод возвращает обычный список (тип list), однако это не так. Метод keys() возвращает список-представление (тип dict_keys). Данный список является неизменяемым динамическим объектом, то есть мы не можем его изменить самостоятельно, однако все изменения, такие как удаление или добавление элементов в словарь, сразу отражаются на нем. Более того, тип dict_keys поддерживает все операции, доступные для множеств!



💡 Для создания пустого множества с помощью {} мы можем использовать такой лайфхак empty = {*()}. Не уверен, что такой код лучше стандартного empty = set(), однако знать это полезно. 😎



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