9

私はこの場合の助けが必要です:

m={}
m[1]=1
m[333]=333
m[2]=2

# Result:
{1: 1, 2: 2, 333: 333}

そのため、最後に「333」を入力しなかった場合でも、印刷すると、この「333」が辞書の最後に表示されます。この「辞書」が自動ソートを行うのはなぜですか?そしてそれをどのように無効にしますか?順序を修正するために並べ替える関数を作成できます。しかし、それは私が望んでいることではありません。データを入力したときと同じように、単に印刷して出力順序を取得したいだけです。良い説明はありますか、そして解決策はありますか?

4

3 に答える 3

23

並べ替えではありません。dictはまったく順序付けられていないため、キーの順序に影響を与えることはできません。collections.OrderedDict2.7および3.1以降には、2.4〜2.6用のスタンドアロンモジュールもあります

于 2012-04-29T09:32:42.430 に答える
2

辞書に保存されているアイテムには、固有の順序はありません。それらが出力される順序は、完全に各キーのハッシュ値と辞書内の他の項目に依存します。

于 2012-04-29T09:33:22.593 に答える
0

この質問が投稿されてからかなり経ちますが、3.6以降、このページにアクセスした人だけが対象ですか?辞書は、アイテムが追加される順序を保持します。

于 2020-09-02T00:28:42.670 に答える