Коли люди кажуть, що набори мають перевірку членства O (1), вони говорять про середній випадок. У гіршому випадку (коли всі стихійні значення стикаються) перевірка членства - це O (n). Дивіться вікі на Python про складність у часі .
У статті Вікіпедії сказано, що найкраща часова складність для хеш-таблиці, яка не змінює розмір, - це O(1 + k/n). Цей результат не застосовується безпосередньо до наборів Python, оскільки в наборах Python використовується хеш-таблиця з розміром.
Трохи далі у статті Вікіпедії йдеться про те, що для середнього випадку та припускаючи просту функцію однорідного хешуваннявання, складність у часі полягає в тому O(1/(1-k/n)), де k/nможна обмежити константу c<1.
Big-O відноситься лише до асимптотичної поведінки як n → ∞. Оскільки k / n може бути обмежена постійною, c <1, незалежно від n ,
O(1/(1-k/n))не більше, ніж O(1/(1-c))еквівалентно O(constant)= O(1).
Таким чином, якщо припустити, однакове просте хешуваннявання, в середньому перевірка членства для наборів Python є O(1).
setреалізація насправді булаdictз фіктивними значеннями, і вона була оптимізована пізніше.