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

  Рет қаралды 3,985

Python Russian

Python Russian

11 ай бұрын

⭐️Список и кортеж • Список и кортеж
Немного копнем поглубже словари и сеты -как работают под капотом, почему такие быстрые при поиске, какие могут быть грабли и каверзные вопросы на собеседовании.
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
docs.python.org/3/glossary.ht...
docs.python.org/3/library/fun...
docs.python.org/3/glossary.ht...
Присоединяйтесь к помощи каналу, будет интересно)
✔️Бусти boosty.to/python_russian/donate
✔️Юмани 410011506612886
Будь первым везде и всегда, включай уведомления о новых выпусках 🔔
#Python #PythonRussian #PyCharm

Пікірлер: 33
@PythonRussian
@PythonRussian 11 ай бұрын
друзья, видео и так большое получилось, забыл добавить, что за скорость словаря и сета мы платим памятью, а также тем, что класть туда можно не все что угодно. Не забывайте подписаться на канал.
@Miron_MipoX
@Miron_MipoX 11 ай бұрын
'''В разных ячейках, но один и тот же кот" - это уже какая-то квантовая запутанность)
@user-sj3fx6oo7u
@user-sj3fx6oo7u Ай бұрын
Спасибо за качественный контент! Кстати, в настройках можно установить пакет проверки синтаксиса для русского языка, чтобы PyCharm перестал ругаться на "опечатки", при использовании кириллицы.
@sgst555
@sgst555 10 ай бұрын
дядька, безмерная благодарность за уроки.. Фишка твоих объяснений в том что с одной стороны они подробные и понятные даже начинающим, а с другой - нет присущего многим авторам академизма... удивительно что так мало подписчиков, первое время даже думал что канал фейковый, типа просто натырил уроки ) Вдохновения для новых видосов!
@banywick8250
@banywick8250 Ай бұрын
контент супер! Спасибо за пояснениею
@andrewdabarow9822
@andrewdabarow9822 11 ай бұрын
Очень полезное видео, спасибо за ваши труды, особенная благодарность за то, что Вы прислушиваетесь к просьбам подписчиков.
@momanddad7801
@momanddad7801 11 ай бұрын
Сегодня собес на Middle. За три дня пересмотрел и законспектировал весь твой канал. Большое спасибо!
@PythonRussian
@PythonRussian 11 ай бұрын
удачи! если будет возможность и желание -отпишись потом и по результатам и по тому что спрашивали. Можно в почту.
@di.n.1906
@di.n.1906 11 ай бұрын
Спасибо больше! Ваш канал просто находка !!
@user-dj4sk6uo7p
@user-dj4sk6uo7p 11 ай бұрын
Врсхищаюсь вашей подаче и структурировано информации! Это идеально! Я только после ваших видео более менее стал ориентироваться в ООП. Сейчас структуры данных повторил!🔥🔥🔥🔥
@kohakovich
@kohakovich 11 ай бұрын
Отличное видео. Всегда узнаю для себя много нового.
@user-ke9be9pv9g
@user-ke9be9pv9g 11 ай бұрын
Большое спасибо за контент! Все очень понятно и полезно! Как по мне, лучший русскоязычный канал по python. Хотелось бы еще видеть практическое применение той или иной темы. Имею в виду задачи, близкие к тем, что встречаются в реальной практике. Я думаю что это позволит лучше понять надобность той или иной темы.
@moonboyforever
@moonboyforever 11 ай бұрын
Класс! Благодарю Вас! ❤❤❤
@exfell320
@exfell320 11 ай бұрын
Пока ждал новый ролик уже успел бросить питон и пойти учить вышмат. Но на будущее в самый раз :)
@Insidepointg
@Insidepointg 11 ай бұрын
Мужик, спасибо тебе огромное за твой труд и отличный навык донесения информации! Респект Скажи пожалуйста, есть ли в планах, записать когда-нибудь видео на тему деревьев, рекурсии и т.д. спасибо
@PythonRussian
@PythonRussian 11 ай бұрын
пока нет, темы специфические и не всем нужны, я думал на тему потоков/ГИЛ рассказать в следующий раз
@barma1309
@barma1309 11 ай бұрын
Отличный видос!
@quansumonner
@quansumonner 10 ай бұрын
Очень информативная лекция, но не стоит спорить с интервьюером. Можете подсказать, как конкретно называется способ разрешения коллизий в Python?
@SoloveY1990
@SoloveY1990 11 ай бұрын
Спасибо!!!
@hdhdjdjdjjd1263
@hdhdjdjdjjd1263 2 ай бұрын
Привет, очень крутое объяснение, но есть вопрос, ты говоришь что функция timeit() возвращает среднее значение времени выполнения, но в документации пишут, что она возвращает общее количество времени для number выполнений, и усреднение происходит только если мы используем timeit в командной строке. Так вот, что возвращает это функция на самом деле при использовании через api интерфейси
@olgalabkovich3699
@olgalabkovich3699 11 ай бұрын
Спасибо за такие видео)))) А можете сделать видео про аллокацию памяти в python)
@PythonRussian
@PythonRussian 11 ай бұрын
не думал пока о такой теме, не уверен что будет интересно многим
@hdhdjdjdjjd1263
@hdhdjdjdjjd1263 2 ай бұрын
Еще один вопрос, связанный с коллизиями, к примеру у элемнтов a и A одинаковый хэш, мы добавили сначала элемент a в словарь, а затем добавили элемент A где у нас уже задействовалась функция для коллизий, затем мы удаляем элемент a, и после этого попробовав проверить наличие элемента A в нашем словаре, мы попадем в пустую ячейку в которой лежал элемент a, как интерпретатор поймет что нужно пойти дальше, воспользовавшись функцией для коллизии и найти наш элемент A
@PythonRussian
@PythonRussian 2 ай бұрын
я не знаю как конкретно работает питон в таком случае, это надо покопать для конкретики, могу только предположить. Или при удалении первого элемента остальные с таким хешем перемещаются (так чтобы в ячейке а оказался А), но это маловерятно, ИЛИ при удалении в ячейке остается некий флаг, встретив который интерпретатор и понимает, что хотя тут пусто, но можно поискать дальше по формуле коллизий.
@hdhdjdjdjjd1263
@hdhdjdjdjjd1263 2 ай бұрын
@@PythonRussian благодарю
@OnlyElf
@OnlyElf 11 ай бұрын
7:05 - Оговорка. Имел ввиду фигурные, а сказал круглые.
@5544ww
@5544ww 9 ай бұрын
6:21 dict() это конструктор?
@myxapg4758
@myxapg4758 8 ай бұрын
Почему словарь - это упорядоченная коллекция, а сеты нет? Если дикт запоминает в какой последовательности в него добавлялись значения, то почему этого не запоминает сет?
@PythonRussian
@PythonRussian 8 ай бұрын
важная способность программиста -задавать правильные вопросы. И ваш вопрос -правильный. Раньше (до версии 3.7) и словари не хранили порядок, но потом смогли, а в чем именно разница можете погуглить или поискать в рекомендованных книгах. Есть отличное видео по словарям от Хеттингера.
@myxapg4758
@myxapg4758 8 ай бұрын
​@@PythonRussian, спасибо, нашёл плейлист с его участием на ютубе, обязательно посмотрю) И книги добавлю в to-do лист)
@user-gt4zh2wb3d
@user-gt4zh2wb3d 8 ай бұрын
Можно уже щёлканье клавы сделать наконец потише?
@PythonRussian
@PythonRussian 8 ай бұрын
увы -нет, это не только от нее зависит, еще микрофон стоит за ней, да и атмосфера на канале именно такая - то звук плохой то изображение мелкое, главное -суть
@user-gt4zh2wb3d
@user-gt4zh2wb3d 8 ай бұрын
@@PythonRussian Ну суть объяснять у вас получается хорошо, это уже отмечали неоднократно. А технические мелочи не так уж тяжело устранить - поставить клаву на что-то мягкое и микрофон поближе ко рту переместить, разрешение тоже меняется бесплатно. Не у всех же здоровенные мониторы и идеальное зрение.
Список и кортеж
37:46
Python Russian
Рет қаралды 4 М.
Атрибуты класса, classmethod и staticmethod
44:40
Python Russian
Рет қаралды 4,8 М.
MOM TURNED THE NOODLES PINK😱
00:31
JULI_PROETO
Рет қаралды 24 МЛН
1 класс vs 11 класс  (игрушка)
00:30
БЕРТ
Рет қаралды 1,4 МЛН
Кәріс өшін алды...| Synyptas 3 | 10 серия
24:51
kak budto
Рет қаралды 1,1 МЛН
🍕Пиццерия FNAF в реальной жизни #shorts
00:41
C++ in 100 Seconds
2:46
Fireship
Рет қаралды 1,8 МЛН
Python 4: первые впечатления
24:35
Python Russian
Рет қаралды 12 М.
Основы многопоточности в Python
58:46
Python Russian
Рет қаралды 4,4 М.
Магические методы в python. Dunder методы
1:00:45
Доступ к свойствам объекта. Property и slots
42:54
MOM TURNED THE NOODLES PINK😱
00:31
JULI_PROETO
Рет қаралды 24 МЛН