Опция A зацикливается на наборе данных один раз в понимании dict, а затем, возможно, может снова зациклить весь этот объем данных, если ничего не проверено, так что ~ O (2n)
Опция B зацикливается на данных и включаеткаждый цикл вызывает 'in', который будет перебирать все not_checked, так что это будет примерно ~ O (n ^ 2)
Опция C создает набор, который неявно зацикливается на данных, а затем выполняет разность наборов, которая такжеперебирает данные, а затем вызывает цикл for для этой разницы, так что ~ O (3n)
Я бы сказал, что A - самый быстрый, но вы могли бы потенциально сделать B быстрее, избавившись от внутреннего цикла изв 'оператор с помощью словаря.
Реально вы не заметите разницу, если не используете достаточно большие наборы данных