1

Pythonの辞書のソースコードがどこにあるのか知りたいのですが。ソースコードはおそらく読みにくいと思いますので、実装と使用されているハッシュルーチンの大まかな説明の直後です。

チェーンが使用されている場合、またはテーブルが再構築されている場合、どのような種類のアルゴリズムが使用され、どのように衝突を処理するかを誰かが知っていますか?

私はこの質問が少し曖昧であることを知っているので、正しい方向へのポイントだけが役に立ちます。誰かがPythonの辞書に関する良いドキュメントを知っているなら、それは素晴らしいことです。

4

3 に答える 3

5

それはObjects/dictobject.cファイルにあります。ソースを理解するためのガイドとなるdictnotes.txtファイルもあります。

Pythonディクショナリは、オープンアドレス法のハッシュテーブルを使用してキーをスロットにマップします。競合は、キーを「混乱させる」ことによって解決されます。大きなステップで開始し、テーブルをスキャンして次の空のスロットを探すまで、ますます小さなステップを使用するアルゴリズム。

このブログ投稿を含む、Web上にいくつかの記事があります。また、コードの優れた露出のために本BeautifulCodeを手に入れることもできます。

于 2013-02-02T17:45:18.440 に答える
2

ソースツリーには、辞書がどのように機能するかについての非常に優れたドキュメントがあります:http: //hg.python.org/cpython/file/ab4b8da79a5f/Objects/dictnotes.txt

于 2013-02-02T17:46:46.107 に答える
2

また.. 。これがより効率的なアクティブ状態のレシピですdictfrom 3 to 24 times more space efficient than regular dictionaries)!! それ以外の場合、前の2つの答えは素晴らしいです!!
http://code.activestate.com/recipes/578375-proof-of-concept-for-a-more-space-efficient-faster/?in=user-178123

于 2013-02-02T17:52:02.687 に答える