Как работают словари в Python | Хэш-таблицы [Any]

Поделиться
HTML-код
  • Опубликовано: 26 июн 2024
  • 👉 Telegram: t.me/pavlin_share
    gist - gist.github.com/Afaneor/ac293...
    🎥 Чтобы не пропустить ничего важного и всегда быть в курсе, подписывайтесь на мой канал и активируйте уведомления! 🔔
    В этом видео мы глубоко погружаемся в одну из ключевых структур данных в Python - хэш-таблицы, на примере реализации словарей (dict). Вы узнаете, как устроены словари в Python, как функционирует хэш-функция, как Python обрабатывает коллизии хэшей и управляет памятью. Мы рассмотрим исходный код CPython, чтобы показать, как на самом деле работают эти механизмы. Это видео будет полезно как начинающим, так и опытным разработчикам, стремящимся улучшить свои навыки в оптимизации и понимании внутренней работы Python.
    0:00 Что будем изучать?
    1:15 Что такое хэш-таблица?
    2:20 Абстрактный пример
    5:10 Знакомство с коллизией
    5:50 Пишем на питоне реализацию
    17:00 Запускаем наш пример
    18:00 Воспроизводим коллизию
    20:40 Бенчмарк
  • НаукаНаука

Комментарии • 11

  • @Fosdark
    @Fosdark Месяц назад

    Спасибо за ваш труд!

  • @vor6758
    @vor6758 27 дней назад

    Добавить хочу от себя
    1) Лучше бы в __init__ давать возможность пользователю сразу добавлять пары коюч-значение
    2) Сделать приватными атрибуты map и size - не хочется пользователю давать к ним прямой доступ (через property или __getattribute__)
    3) Неплохо было бы добавить методы keys, values, items
    А так все на высшем уровне!!❤

  • @ctsrazor
    @ctsrazor Месяц назад +1

    Душно конечно, но информация полезная!)

  • @MioGesa-md2ul
    @MioGesa-md2ul Месяц назад

    Спасибо вам🎉

  • @vor6758
    @vor6758 27 дней назад

    Кстати, в методе _resize у old_map в цикле нет смысла проверять на "is None", потому что этот метод вызывается только в том случае, когда у old_map уже некуда вставить значения))

  • @Oleg_Zhigulin
    @Oleg_Zhigulin Месяц назад

    Привет
    Спасибо за обьяснение пробинга
    Метод удаления почему там сравнивается 0 элемент с ключем?

    • @nikolaypavlin
      @nikolaypavlin  Месяц назад

      Косяк, я в конце добавил сохранение еще и хэша (индекса элемента), и вот где-то мог забыть скорректировать, а тестов не написал на все методы
      Сравнивать надо ключи, корректное замечание

  • @belevich_andrei
    @belevich_andrei Месяц назад

    А если такая ситуация с коллизиями все таки происходит, например на очень больших данных, то как тогда работают с такими данными?

    • @nikolaypavlin
      @nikolaypavlin  Месяц назад

      Честно скажу, я с такой проблемой не сталкивался на практике, поэтому не могу придумать пример сходу, в целом надо от задачи идти, может быть тебе не нужен словарь в таком случае

  • @andynaz7044
    @andynaz7044 Месяц назад +1

    Подключить русский орфограф.словарь религия не позволяет?

    • @nikolaypavlin
      @nikolaypavlin  Месяц назад

      Ограничений таких не знаю не в одной религии
      По умолчанию не включен, надо будет озадачиться