問題タブ [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.

0 投票する
1 に答える
63958 参照

c# - OrderedDictionary とディクショナリ

追加されたのと同じ順序でDictionary列挙する方法を探していました。KeyValuePairさて、Dictionary のドキュメントには、次のことが明確に記載されています。

KeyValuePair<TKey, TValue>列挙のために、ディクショナリ内の各項目は、値とそのキーを表す構造体として扱われます。アイテムが返される順序は定義されていません。

私が必要としていたOrderedDictionaryのは .

出力:

ご覧のとおり、どちらも順序付けされており、2 つの疑問が生じます。

Dictionary値が追加される順序とは異なる順序になるのはどの場合ですか? 最初のforeachループは同じ順序で取得することを保証しますKeyValuePairか、それともインデックスを使用する必要がありますか?

0 投票する
2 に答える
631 参照

python - 自然な添字を使用して 3 次元の OrderedDict を作成する

次のプロパティを持つ辞書構造が必要です。

  1. 二重にネストされています (つまり、非常に多くの言葉で 3 次元)
  2. レベルごとに追加されたものの順序を記憶します

したがって、次のようにアイテムを追加すると:

次の理解の結果:

次のようになります。

新しいキーにこの構造を強制するためにa を使用しようとしたdefaultdictので、次のように長い方法で入力する必要はありません。

しかし、defaultdictは上位 2 つのレベルの順序を覚えていません。動作をマージする方法がわからないので、上位 2 つのレベルは明らかにdefaultdict動作を譲っていdます。希望する構造を実現するにはどうすればよいですか?

0 投票する
6 に答える
3153 参照

python - OrderedDict が順番どおりにならない

このループのアイデアは、リストを反復処理することでした。オブジェクトの特定のプロパティが OrderedDict のキーでない場合は、それを追加します。オブジェクトのリストの辞書です

OrderedDict をほとんど正しく作成しているように見えますが、印刷すると順序が狂ってしまいます。のようなものではなく、 のよう(01/13) (02/13) (03/13)になります(02/13) (03/13) (01/13)
なぜこれが起こり、どうすれば修正できますか?

0 投票する
2 に答える
2512 参照

python - 順序付けられた辞書内の任意の文字列値を検索します

ネストされた順序付けられた辞書、つまり順序​​付けられた辞書があり、その値の一部は、さらに順序付けられた辞書を含む順序付けられた辞書です。コレクションモジュールを使用し、次の呼び出しを使用すると

yOrDict次に、yml ファイルから順序付き辞書を取得しますApplyForm.yml

yOrDict には 1 つのキー ( ApplyForm) と、順序付けられた辞書である値があるとします。

さらに呼び出すと、別の順序付けられた辞書が得られます。

yOrDictLevel1値に順序付けられた辞書が含まれる 6 つのキーがあるとします。

ある場所で、順序付けられた辞書の 1 つに という名前の値があるとしBlockます。

ブロックが最上位の順序付けられた辞書に表示されるかどうかを確認できる Python の呼び出し/関数/メソッドはありyOrDictますか? つまり、文字列 "Block" が yOrDict にあるかどうかを確認したいですか?

0 投票する
2 に答える
3999 参照

python - OrderedDictionary.popitem() はすべての値を反復できませんか?

順序付けられた辞書を最後から順に繰り返し処理しようとしています。標準辞書の場合はすべて正常に機能しますが、orderedDict の最初のソリューションは奇妙な反応を示します。popitem()1つのキーと値のペアを返している間(ただしkv_pair、2つの変数で置き換えることができないため、どういうわけか順番に)、反復は終了しているようです。次のキーと値のペアに進む簡単な方法がわかりません。

2 つの有効な代替手段 (以下を参照) を見つけましたが、どちらも通常の辞書アプローチの優雅さに欠けています。

オンライン ヘルプで見つけた情報から判断することはできませんが、私の予想は間違っていると思います。もっとエレガントなアプローチはありますか?

0 投票する
3 に答える
1137 参照

python - ディクショナリの構築中に OrderedDict 値を条件付きで削除する

私は同様の質問をしました (キーを削除せずに辞書から重複値を削除します)、残念ながら、私が必要としていた答えはどれもありませんでしたが、彼らは私の答えを出しました。質問。

2 つの .csv ファイルから OrderedDict を構築しています。1 つ目は場所コードを含み、2 つ目は時間ごとのハードウェア再配置のリストです。すべての場所コードは一意であるため、それが私の辞書の鍵です。その .csv ファイルを使用して、空の値で辞書を作成するループがあります。次に、ハードウェア データを正しいロケーション コードに追加する別のループがあります。一部のハードウェア データはリスト形式であるため、ハッシュできません。

私が抱えている問題は、ハードウェアが新しい場所に移動するときに、以前の場所から削除する必要があることです。そのため、コードの最後の 1 か所だけに

私のロケーションコードは;

私のハードウェアデータは時間順に並んでいます。

条件ステートメントなしでタイムフレーム全体のコードを実行すると、最終的な辞書は次のようになります

しかし、私がそれを必要としているのも次のとおりです。

項目 (値) は場所 (キー) が追加される順序と同じ順序でディクショナリに追加されないため、ディクショナリを作成 (値を追加) しながらこれを行うことが重要です。完了後に重複を削除します。

私は多くのことを試し、異なる結果を得ましたが、私の最新のものは

これにより、すべての場所が空になります。私はこれに数日間立ち往生しているので、助けていただければ幸いです。

0 投票する
2 に答える
517 参照

python - Python順序付き辞書:forループを使用して辞書の値を変更するために[]表記が必要なのはなぜですか?

Ordered Dictionary の値を変更する必要があります。ループを使用しましたforが、値は変化しませんでした。[]これは、ブラケット表記を使用して直接ではなく、ループ内の変数名に割り当てていたためであることがわかりました。ループ変数名でループ内の値を参照できないのはなぜですか?

試した:

結果:OrderedDict([('Accel X Bias', None), ('Mag X Bias', None)])

期待される:OrderedDict([('Accel X Bias', 1), ('Mag X Bias', 2)])

完全なコード:

これはおそらく基本的なプログラミングの原則なので、「なぜ」に興味があるので、このような間違いをこれ以上犯さないようにしています。ありがとう!

0 投票する
4 に答える
12475 参照

python - OrderedDict を使用しない理由はありますか?

モジュールのOrderedDictを参照していcollectionsます。これは順序付けられた辞書です。

注文可能な機能が追加されている場合、それは必要ないことが多いと思いますが、それでも欠点はありますか? 遅いですか?機能が不足していませんか?不足しているメソッドはありませんでした。

要するに、通常の辞書の代わりにこれを常に使用すべきではないのはなぜですか?