OrderedDictオブジェクトを作成しようとしていますが、すぐに作成します。要素がすべてごちゃごちゃになっています。
これが私がすることです:
from collections import OrderedDict
od = OrderedDict({(0,0):[2],(0,1):[1,9],(0,2):[1,5,9]})
要素は、割り当てた順序にとどまりません
od
OrderedDict([((0, 1), [1, 9]), ((0, 0), [2]), ((0, 2), [1, 5, 9])])
docs.python.orgには例がなく、なぜ注文が混乱しているのかわかりません。どんな助けも大歓迎です。
あなたの問題は、dict
に初期データを与えるOrderedDict
を構築していることです-このdict
does n't注文を保存するため、OrderedDict
に到達する前に注文は失われます。
解決策は、順序付けられたデータ型から構築することです-最も簡単なのは、list
sのTuple
です:
>>> from collections import OrderedDict
>>> od = OrderedDict([((0, 0), [2]), ((0, 1), [1, 9]), ((0, 2), [1, 5, 9])])
>>> od
OrderedDict([((0, 0), [2]), ((0, 1), [1, 9]), ((0, 2), [1, 5, 9])])
これがOrderedDict
が文字列表現に使用する構文を使用する理由であることに注意する価値があります-文字列表現は有効なPythonコードを使用してオブジェクトを再現する必要があります。出力が辞書ではなくタプルのリストを使用する理由。
編集: Python 3.6、kwargs
が順序付けられている なので、最新の状態であれば、代わりにキーワード引数を使用できますPythonバージョン。
.7以降 、これはdict
sにも当てはまります(3.6のCPythonに当てはまりましたが、言語仕様では指定されていなかったため、OrderedDict
の使用は依然として互換性のために必要)。これは、3.7 +環境を想定できる場合、OrderedDict
を完全に削除するか、特定の機能が必要な場合は通常のdict
から構築できることを意味します(例:平等を重視するための順序) 。