В какой коллекции Python наиболее быстрый поиск элементов?

«В какой коллекции Python наиболее быстрый поиск элементов?» — вопрос из категории Python, который задают на 33% собеседований Data Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Наиболее быстрый поиск по ключу обеспечивает словарь (dict) или множество (set), так как они реализованы на основе хэш-таблиц, что дает среднюю сложность O(1).

Почему?

  • dict и set используют хэширование ключей для прямого доступа к ячейке памяти.
  • list или tuple требуют последовательного перебора (O(n)) или бинарного поиска (O(log n)), если отсортированы.

Пример:

# Быстрый поиск в dict и set
my_dict = {'a': 1, 'b': 2, 'c': 3}
value = my_dict.get('b')  # O(1) - прямое обращение по хэшу

my_set = {1, 2, 3, 4, 5}
exists = 3 in my_set  # O(1) - проверка по хэшу

# Медленный поиск в list (в худшем случае)
my_list = [1, 2, 3, 4, 5]
exists = 3 in my_list  # O(n) - линейный поиск

Важно: Сложность O(1) — средняя; в худшем случае (коллизии хэшей) она может деградировать до O(n), но на практике это редкость при хорошей хэш-функции.