問題タブ [dictview]

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 投票する
3 に答える
3560 参照

python-3.x - Python 3.0 - dict メソッドがビューを返す - なぜ?

dict メソッド dict.keys()、dict.items() および dict.values() は、リストの代わりに「ビュー」を返します。 http://docs.python.org/dev/3.0/whatsnew//3.0.html

まず、ビューとイテレータの違いは何ですか? 第二に、この変更の利点は何ですか? パフォーマンス上の理由だけですか?

私には直感的ではないように思えます。つまり、物のリストを求めているのに (すべてのキーを渡してください)、別のものが返ってきます。これは人々を混乱させるでしょうか?

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

python - python3:「+」オペランドを持つ辞書の合計 (和集合) で例外が発生する

update() メソッドを避けたいのですが、「+」オペランドを使用して 2 つの辞書を 3 つ目の辞書にマージできることを読みましたが、私のシェルでは次のようになります。

どうすればこれを機能させることができますか?

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

python - dict.items と dict.values の間で一貫性のない動作

注: python3のコード例ですが、質問はpython2も表しています( などに置き換え.keys.viewkeys

dictオブジェクトは、(場合によっては) セット操作をサポートするビュー メソッドを提供します。

ただし、値ビューは集合演算子をサポートしていません:

dict 値はハッシュ不可能なオブジェクトになる可能性があることを理解しています。そのため、値のセットを作成することは常に可能であるとは限りませんが、同じことが にも当てはまりますdict.itemsここでは、セット操作は実行時にのみ失敗します。.itemsdictを入力しますが、 set 操作.valuesはすぐに失敗します。

ドキュメントでは、エントリは一般に一意ではないため、 Values ビューは set-like として扱われないと述べていますが、これは説得力のある理由ではないよう{0, 0, 1, 2}です。

この行動の矛盾の本当の理由は何ですか?

0 投票する
0 に答える
67 参照

python - パフォーマンスを一覧表示する dict_key および dict_value

Python 2.x では、これを行うことができます。

Python 3.x では、dict_key.keys()を返し、 dict_valueを返します。これらのビュー オブジェクトは、Python 2.x のダイレクト リスト レンダーよりも最もパフォーマンスが高いと思います (ジェネレーターのように?)。.values()

ただし、インデックスで辞書キー/辞書値にアクセスするには、list() を使用する必要があります。

1つのインデックスにアクセスするためにキー/値を完全に作成せずに、インデックス(0、1、[...] 999]でアクセスする方法はありlist()ますか?(私は非常に大きな辞書を使用しています)

この質問はパフォーマンスに関するものです。それを行う方法についてではありません。重複フラグは関係ありません。

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

python - set-like オブジェクトで .intersection() のような set メソッドがサポートされないのはなぜですか?

Python 3.7 で、2 つの辞書のキーの共通部分を計算したいと考えています。.intersection()これを行うには、 でメソッドを呼び出したいのですが、keys()機能しません。

.keys() はセットのようなオブジェクトを生成しますが、ほとんどのセット メソッドはそれに対して機能しません。ただし、機能するのは、セットのようなオブジェクトの非常に未知のビット単位の演算子のオーバーロード ( など)&です。

&セットのようなオブジェクトのオーバーロードはほとんど使用されておらず、ほとんどのプログラマーには知られていないことがわかりました。.intersection()orのようなメソッド名.union()は自己文書化されており、この定義により間違いなくより Pythonic です。

なぜサポートされていないのですか?ドキュメントでさえ、セットのようなオブジェクトでのみサポートされていることは言及せずに、エイリアスのような&およびメソッドをリストしています。.intersection()&

注:何らかの理由で、IPython では、オートコンプリート.isdisjoin()が で使用可能なメソッドとしてリストされdict.keys()ます。設定された 17 のメソッドのうち、1 つが存在します。