問題タブ [ordereddictionary]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - OrderedDictionary とディクショナリ
追加されたのと同じ順序でDictionary
列挙する方法を探していました。KeyValuePair
さて、Dictionary のドキュメントには、次のことが明確に記載されています。
KeyValuePair<TKey, TValue>
列挙のために、ディクショナリ内の各項目は、値とそのキーを表す構造体として扱われます。アイテムが返される順序は定義されていません。
私が必要としていたOrderedDictionary
のは .
出力:
ご覧のとおり、どちらも順序付けされており、2 つの疑問が生じます。
Dictionary
値が追加される順序とは異なる順序になるのはどの場合ですか? 最初のforeach
ループは同じ順序で取得することを保証しますKeyValuePair
か、それともインデックスを使用する必要がありますか?
python - 自然な添字を使用して 3 次元の OrderedDict を作成する
次のプロパティを持つ辞書構造が必要です。
- 二重にネストされています (つまり、非常に多くの言葉で 3 次元)
- レベルごとに追加されたものの順序を記憶します
したがって、次のようにアイテムを追加すると:
次の理解の結果:
次のようになります。
新しいキーにこの構造を強制するためにa を使用しようとしたdefaultdict
ので、次のように長い方法で入力する必要はありません。
しかし、defaultdict
は上位 2 つのレベルの順序を覚えていません。動作をマージする方法がわからないので、上位 2 つのレベルは明らかにdefaultdict
動作を譲っていd
ます。希望する構造を実現するにはどうすればよいですか?
python - OrderedDict が順番どおりにならない
このループのアイデアは、リストを反復処理することでした。オブジェクトの特定のプロパティが OrderedDict のキーでない場合は、それを追加します。オブジェクトのリストの辞書です
OrderedDict をほとんど正しく作成しているように見えますが、印刷すると順序が狂ってしまいます。のようなものではなく、 のよう(01/13) (02/13) (03/13)
になります(02/13) (03/13) (01/13)
。
なぜこれが起こり、どうすれば修正できますか?
python - 順序付けられた辞書内の任意の文字列値を検索します
ネストされた順序付けられた辞書、つまり順序付けられた辞書があり、その値の一部は、さらに順序付けられた辞書を含む順序付けられた辞書です。コレクションモジュールを使用し、次の呼び出しを使用すると
yOrDict
次に、yml ファイルから順序付き辞書を取得しますApplyForm.yml
。
yOrDict には 1 つのキー ( ApplyForm
) と、順序付けられた辞書である値があるとします。
さらに呼び出すと、別の順序付けられた辞書が得られます。
yOrDictLevel1
値に順序付けられた辞書が含まれる 6 つのキーがあるとします。
ある場所で、順序付けられた辞書の 1 つに という名前の値があるとしBlock
ます。
ブロックが最上位の順序付けられた辞書に表示されるかどうかを確認できる Python の呼び出し/関数/メソッドはありyOrDict
ますか? つまり、文字列 "Block" が yOrDict にあるかどうかを確認したいですか?
python - OrderedDictionary.popitem() はすべての値を反復できませんか?
順序付けられた辞書を最後から順に繰り返し処理しようとしています。標準辞書の場合はすべて正常に機能しますが、orderedDict の最初のソリューションは奇妙な反応を示します。popitem()
1つのキーと値のペアを返している間(ただしkv_pair
、2つの変数で置き換えることができないため、どういうわけか順番に)、反復は終了しているようです。次のキーと値のペアに進む簡単な方法がわかりません。
2 つの有効な代替手段 (以下を参照) を見つけましたが、どちらも通常の辞書アプローチの優雅さに欠けています。
オンライン ヘルプで見つけた情報から判断することはできませんが、私の予想は間違っていると思います。もっとエレガントなアプローチはありますか?
python - ディクショナリの構築中に OrderedDict 値を条件付きで削除する
私は同様の質問をしました (キーを削除せずに辞書から重複値を削除します)、残念ながら、私が必要としていた答えはどれもありませんでしたが、彼らは私の答えを出しました。質問。
2 つの .csv ファイルから OrderedDict を構築しています。1 つ目は場所コードを含み、2 つ目は時間ごとのハードウェア再配置のリストです。すべての場所コードは一意であるため、それが私の辞書の鍵です。その .csv ファイルを使用して、空の値で辞書を作成するループがあります。次に、ハードウェア データを正しいロケーション コードに追加する別のループがあります。一部のハードウェア データはリスト形式であるため、ハッシュできません。
私が抱えている問題は、ハードウェアが新しい場所に移動するときに、以前の場所から削除する必要があることです。そのため、コードの最後の 1 か所だけに
私のロケーションコードは;
私のハードウェアデータは時間順に並んでいます。
条件ステートメントなしでタイムフレーム全体のコードを実行すると、最終的な辞書は次のようになります
しかし、私がそれを必要としているのも次のとおりです。
項目 (値) は場所 (キー) が追加される順序と同じ順序でディクショナリに追加されないため、ディクショナリを作成 (値を追加) しながらこれを行うことが重要です。完了後に重複を削除します。
私は多くのことを試し、異なる結果を得ましたが、私の最新のものは
これにより、すべての場所が空になります。私はこれに数日間立ち往生しているので、助けていただければ幸いです。
python - Python順序付き辞書:forループを使用して辞書の値を変更するために[]表記が必要なのはなぜですか?
Ordered Dictionary の値を変更する必要があります。ループを使用しましたfor
が、値は変化しませんでした。[]
これは、ブラケット表記を使用して直接ではなく、ループ内の変数名に割り当てていたためであることがわかりました。ループ変数名でループ内の値を参照できないのはなぜですか?
試した:
結果:OrderedDict([('Accel X Bias', None), ('Mag X Bias', None)])
期待される:OrderedDict([('Accel X Bias', 1), ('Mag X Bias', 2)])
完全なコード:
これはおそらく基本的なプログラミングの原則なので、「なぜ」に興味があるので、このような間違いをこれ以上犯さないようにしています。ありがとう!
python - OrderedDict を使用しない理由はありますか?
モジュールのOrderedDictを参照していcollections
ます。これは順序付けられた辞書です。
注文可能な機能が追加されている場合、それは必要ないことが多いと思いますが、それでも欠点はありますか? 遅いですか?機能が不足していませんか?不足しているメソッドはありませんでした。
要するに、通常の辞書の代わりにこれを常に使用すべきではないのはなぜですか?