-1

重複の可能性:
Pythonは辞書キーをどのような順序で表示しますか?

私が答えようとしていたこの非常に奇妙なPythonの質問がありました(SOで、しかし作者がそれを削除したようです)。これは私を真っ逆さまにさせました、そして私はこのフラモックス現象の背後にある原因が何であるかを自分自身にもっともらしく説明することができないようです。以下のように初期化するPython辞書(連想配列)があります。

d = {"word1": 1, "word2": 2, "word3": 3}

そして、スペースで区切られた「d」のキーを出力するfor..inコンストラクトを使用してループします。 期待される出力:word1 word2 word3
実際の出力:word1 word3 word2

次に、「d」を次のように印刷しようとしました

印刷d

出力

{'word1':1、'word3':3、'word2':2}

オンラインのPythonドキュメント、SOに関する既存のアンケート、ブログをスキャンしていましたが、原因を完全に把握できませんでした。ここで何かが足りませんか?さらに、この質問に反対票を投じたすべての人に、同じ理由を詳しく説明してほしいという親切な要望があります。

乾杯。:-)

4

3 に答える 3

5

Pythondictは、キーの特定の順序を保証しません。

collections.OrderedDictキーの挿入順序を保持します。

于 2012-05-22T15:19:16.650 に答える
4

Pythonディクショナリのキーはソートされていません。

for key in sorted(d):
    print key,

期待どおりに印刷word1 word2 word3されます。

于 2012-05-22T15:18:31.313 に答える
4

ドキュメントから:

ディクショナリは、キーが一意である(1つのディクショナリ内で)必要がある、順序付けされていないキーと値のペアのセットと考えるのが最善です。中括弧のペアは空の辞書を作成します:{}。中括弧内にkey:valueペアのコンマ区切りリストを配置すると、最初のkey:valueペアがディクショナリに追加されます。これは、辞書が出力に書き込まれる方法でもあります。

ディクショナリの主な操作は、キーを使用して値を格納し、キーを指定して値を抽出することです。また、delを使用してkey:valueのペアを削除することもできます。すでに使用されているキーを使用して保存すると、そのキーに関連付けられている古い値は忘れられます。存在しないキーを使用して値を抽出するとエラーになります。

ディクショナリオブジェクトのkeys()メソッドは、ディクショナリで使用されているすべてのキーのリストを任意の順序で返します(ソートする場合は、sorted()関数を適用するだけです)。単一のキーが辞書にあるかどうかを確認するには、inキーワードを使用します。

http://docs.python.org/tutorial/datastructures.html

最後の段落はそれをすべて言います。

于 2012-05-22T15:28:19.180 に答える