Словарь и множество (dict, set)

Опубликовано: 29 Июнь 2023
на канале: Python Russian
4,780
285

⭐️Список и кортеж    • Список и кортеж  

Немного копнем поглубже словари и сеты -как работают под капотом, почему такие быстрые при поиске, какие могут быть грабли и каверзные вопросы на собеседовании.

1) dict - словарь, отображение, хеш-мап, ассоциативный массив, коллекция пар ключ-значение, где ключом может быть только hashable тип, доступ по ключу и проверка наличия ключа O(1), с питона 3.7 хранит порядок вставки
2) пустой словарь создавать лучше через {},а не dict(), под капотом сразу будет создано 8 элементов
3) set - множество, хешсет, неупорядоченный набор hashable объектов, доступ и проверка наличия O(1)
4) frozenset - неизменяемый брат множества
5) Hashable != Immutable, эти понятия часто путают, помните что это не одно и то же.
6) алгоритм работы словаря и сета: Получаем хеш -} высчитываем позицию в массиве -} если элемента нет то действуем соответственно задаче -} если элемент есть то сравниваем ключ == тому что ищем -} если ключ не равен искомому то ищем дополнительный бакет
7) По умолчанию самописные классы возвращают хеш основанный на id, если переопределяете хеш, то всегда проверяйте, что у равных объектов одинаковый хеш

8) Проверка на содержание тоже вызывает ошибку, если элемент не хешируем. Тапл можно положить в сет только если все его элементы хешируемы, frozenset без проблем кладется в сет. Словари и сеты нельзя положить в словари(как ключ) и сеты.
9) За скорость словаря и сета мы платим большей памятью и тем, что положить туда можно не любые элементы

Читать:
"High Performance Python" by Micha Gorelick and Ian Ozsvald
"Fluent Python" by Luciano Ramalho

https://docs.python.org/3/glossary.ht...
https://docs.python.org/3/library/fun...
https://docs.python.org/3/glossary.ht...

Присоединяйтесь к помощи каналу, будет интересно)
✔️Бусти https://boosty.to/python_russian/donate
✔️Юмани 410011506612886

Будь первым везде и всегда, включай уведомления о новых выпусках 🔔


Смотри там где удобно🤩
✔️ https://vk.com/python_russian
✔️ https://boosty.to/python_russian

✔️    / pythonrussian  
✔️ https://t.me/python_russian

✔️ https://dzen.ru/python_russian
✔️ https://rutube.ru/channel/24346352/

#Python #PythonRussian #PyCharm


Смотрите видео Словарь и множество (dict, set) онлайн без регистрации, длительностью часов минут секунд в хорошем качестве. Это видео добавил пользователь Python Russian 29 Июнь 2023, не забудьте поделиться им ссылкой с друзьями и знакомыми, на нашем сайте его посмотрели 4,78 раз и оно понравилось 28 людям.