Быстрый вопрос, чтобы в основном удовлетворить мое любопытство по этой теме.
Я пишу несколько крупных программ на основе python с бэкэнд базы данных SQlite и буду иметь дело с большим количеством записей в будущем, поэтому мне нужно как можно больше оптимизировать.
Для нескольких функций я просматриваю ключи в словаре. Я использовал ключевое слово "in" для прототипирования и планировал вернуться и оптимизировать эти поисковые запросы позже, так как я знаю, что ключевое слово "in", как правило, O (n) (поскольку это просто переводит на python, итерацию по всему списку и сравнение каждый элемент). Но, поскольку питон python в основном представляет собой только хэш-карту, интерпретатор python достаточно умен, чтобы интерпретировать:
if(key in dict.keys()):
...code...
в
if(dict[key] != None):
...code...
Это в основном одна и та же операция, но верхняя часть будет O (n), а нижняя - O (1).
Мне легко использовать нижнюю версию в моем коде, но потом мне было просто любопытно и подумал, что я спрошу.