2011-09-04 7 views
23

私はcollections.Counterのviewkeys()、viewitems()、viewvalues()メソッドを使用したとき、これらの3つのタイプに遭遇しました。dict_keys、dict_items、dict_valuesとは

戻された3つのメソッドの値は、タイプdict_keys,dict_itemsおよびdict_valuesです。

これは私が気づいたとおり、繰り返し可能です。

しかし、私の質問は:

  • は、なぜこれらの3つのタイプが存在するのですか?または、その使用法は何ですか?

答えて

28

What's new in 2.7文書は、これらが導入された場所です。これらの「ビュー」はPython 3のために紹介されました(そして、あなたが見てきたように、2.7にバックポートされました)が、それらが参照する辞書の最高の世界として機能するようになっています(here)。

私たちが前にリストを作ったkeys/values/itemsの方法を前にしていました。これはdictの情報をコピーすることによってメモリを無駄にし、私たちはiterkeys/itervalues/iteritemsの方法でこのメモリを無駄にしませんでしたが、それほど機能的ではありませんでした(唯一できることはそれらを繰り返し実行することです。 )。これらの新しいビューには、セット操作、効率的な比較、繰り返しの反復などの論理的な機能があります。