Боюсь, что твои времена не очень-то доказывают.
Ваш тест на строку в Dint является самым быстрым: в общем, тест для всего, чего нет в словаре, скорее всего будет быстрым, но это только потому, что вам повезло, и вы впервые нажали пустую ячейку, чтобы поиск мог завершиться , Если вам не повезло и вы выбрали значение, которое попадает в одну или несколько полных ячеек, оно может оказаться медленнее, чем случаи, которые действительно что-то находят.
Тестирование произвольной строки в словаре должно вычислять хеш-код для строки. Это занимает время, пропорциональное длине строки, но Python имеет хитрый трюк и вычисляет его только один раз для каждой строки. Поскольку в тесте синхронизации вы снова и снова используете одну и ту же строку, время, затрачиваемое на вычисление хэша, теряется, поскольку это происходит только в первый раз, а не в другие 99999999 раз. Если бы вы использовали разную строку каждый раз, вы бы получили совершенно другой результат.
Python оптимизировал код для словарей, где ключи являются строками. В целом вы должны обнаружить, что использование строковых ключей, когда вы используете одни и те же ключи несколько раз, немного быстрее, но если вам придется продолжать преобразовывать целые числа в строку перед поиском, вы потеряете это преимущество.