[解決済み] ディクショナリービューオブジェクトとは何ですか?
質問
Python 2.7で、私たちは ディクショナリビューメソッド が利用できます。
さて、次のような長所と短所があることがわかりました。
-
dict.items()
(そしてvalues
,keys
): リストを返すので、実際に結果を保存することができます。 -
dict.iteritems()
(など):ジェネレータを返すので、生成された値を1つずつ反復処理することができます。
は何ですか?
dict.viewitems()
(など)は何のためにあるのでしょうか?その利点は何ですか?どのように機能するのでしょうか?結局ビューってなんなの?
ビューは常に辞書からの変更を反映していると読みました。しかし、パフォーマンスやメモリの観点からはどうなのでしょうか?また、その長所と短所は何でしょうか?
解決方法は?
ディクショナリ・ビューは、基本的にその名の通りです。 ビューは単にウィンドウのようなものです 辞書のキーと値(または項目)に対する 以下は、その抜粋です。 公式ドキュメント Python 3用
>>> dishes = {'eggs': 2, 'sausage': 1, 'bacon': 1, 'spam': 500}
>>> keys = dishes.keys()
>>> values = dishes.values()
>>> # view objects are dynamic and reflect dict changes
>>> del dishes['eggs']
>>> keys # No eggs anymore!
dict_keys(['sausage', 'bacon', 'spam'])
>>> values # No eggs value (2) anymore!
dict_values([1, 1, 500])
(Python2の同等品では
dishes.viewkeys()
と
dishes.viewvalues()
.)
この例では ビューの動的特性 キー・ビューは ではない は、ある時点のキーのコピーではなく、キーを表示する単純なウィンドウであり、キーが変更されると、ウィンドウを通して見えるものも変更されます。 この機能は状況によっては便利です (例えば、キーが必要になるたびに現在のキーのリストを再計算するのではなく、プログラムの複数の部分でキーに関するビューを使って作業することができます)。 エラーの原因となる .
メリットとしては ご覧 を使用するのは、例えばキーが 少量の固定メモリ で、必要なのは 少量の固定されたプロセッサ時間 一方、Python 2では、Rajendran T氏が引用したように、しばしば不必要に新しいリストを作成し、リストの長さに比例した量のメモリと時間を消費します)。 窓のアナロジーを続けるなら、壁の向こうの風景を見たいなら、単に開口部を作る(窓を作る)だけです。キーをリストにコピーすることは、壁の上に風景のコピーを描く代わりに、時間とスペースを消費し、自分自身を更新しないことに相当します。
要約すると、ビューとは、簡単に言えば、辞書のビュー(ウィンドウ)であり、辞書が変更された後でもその内容を表示するものである。 ビューは、リストとは異なる機能を提供します。 コピー 一方、ビューは動的で、作成時にデータ(キーや値)をコピーする必要がないため、より高速に取得できます。
関連
-
[解決済み] 'DataFrame' オブジェクトに 'sort' 属性がない
-
[解決済み] 'int'オブジェクトに'__getitem__'属性がない。
-
[解決済み] 辞書を値で並べ替えるにはどうしたらいいですか?
-
[解決済み] Pythonで辞書に新しいキーを追加するにはどうすればよいですか?
-
[解決済み] 辞書を繰り返し使用するには?
-
[解決済み] 与えられたキーがすでに辞書に存在するかどうかをチェックする
-
[解決済み] Python 3で「1000000000000000 in range(1000000000000001)」はなぜ速いのですか?
-
[解決済み】if __name__ == "__main__": は何をするのでしょうか?
-
[解決済み】静的なMapを初期化する方法は?
-
[解決済み】2つの辞書を1つの式でマージする(辞書の和をとる)には?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
PythonによるLeNetネットワークモデルの学習と予測
-
python call matlab メソッドの詳細
-
PicgoのイメージベッドツールをPythonで実装する
-
Python カメの描画コマンドとその例
-
Python jiabaライブラリの使用方法について説明
-
任意波形を生成してtxtで保存するためのPython実装
-
風力制御におけるKS原理を深く理解するためのpythonアルゴリズム
-
[解決済み】Python: OverflowError: 数学の範囲エラー
-
[解決済み】django インポートエラー - core.managementという名前のモジュールがない
-
[解決済み】辞書に値が存在するか確認する方法(python)