このページには、興味深いものがあります。
(実際には) str キーのみを扱う dict の高速パスがあることに注意してください。これはアルゴリズムの複雑さには影響しませんが、一定の要因 (典型的なプログラムの終了速度) に大きな影響を与える可能性があります。
では、それは正確にはどういう意味ですか?
キーとして文字列を使用すると常に高速になるということですか?
はいの場合、なぜですか?
アップデート:
最適化についての提案をありがとう! しかし、私は実際には、最適化を行うべきかどうか、またはいつ行うべきかよりも、明白な真実に関心があります。
更新 2:
すばらしい回答をありがとうございます。@DaveWebb が提供するリンクの内容をここで引用します。
" ...
ma_lookupは、最初はlookdict_string関数 ( 3.0 でlookdict_unicodeに名前が変更されました) に設定されており、辞書内のキーと検索対象のキーの両方が標準の PyStringObject のものであると想定しています。文字列間の比較では例外が発生しないため、さまざまなエラー チェックを軽減するなど、いくつかの最適化を行うことができます。また、リッチ オブジェクトの比較も必要ありません。つまり、 PyObject_RichCompareBoolの呼び出しを避け、常に_PyString_Eqを直接使用します。
... "
また、実験数値については、int から string への変換がなければ、その差はさらに大きくなると思います