На этой странице я вижу что-то интересное:
Обратите внимание, что существует быстрый путь для dicts, который (на практике) касается только str-ключей; это не влияет на алгоритмическую сложность, но может существенно повлиять на постоянные факторы: как быстро заканчивается типичная программа.
Так что это значит?
Это означает использование строки, поскольку ключ всегда быстрее?
Если да, то почему?
Update:
Спасибо за предложения по оптимизации! Но на самом деле меня больше интересует простая истина, чем то, как или когда мы должны делать оптимизацию.
Обновление 2:
Спасибо за отличные ответы, я приведу контент из , предоставленный @DaveWebb здесь:
" ...
ma_lookup изначально устанавливается в функцию lookdict_string (переименована в lookdict_unicode в 3.0), которая предполагает, что оба ключа в словаре и поиск ключа - это стандартные PyStringObject. Затем он может сделать пару оптимизаций, таких как смягчение различных проверок ошибок, поскольку сравнение строк с строкой никогда не вызывает исключений. Также нет необходимости в сравнении с богатыми объектами, что означает, что мы не вызываем PyObject_RichCompareBool и всегда используем _PyString_Eq.
... "
Кроме того, для чисел эксперимента я думаю, что размер разницы будет еще больше, если нет преобразования int-to-string