すべての場所items()
でiteritems()
はなく使用することは合法ですか?なぜiteritems()
Python 3から削除されたのですか?素晴らしくて便利な方法のようです。その背後にある理由は何ですか?
編集:明確にするために、Python 2とPython 3の両方と互換性のある方法で、ジェネレーターのような方法(一度に1つのアイテム、すべてがメモリではない)で辞書を反復するための正しいイディオムは何かを知りたい?
Python 2.xでは- .items()
(キー、値)のペアのリストを返しました。Pythonの3.xのでは、.items()
今でitemview
異なる振る舞いオブジェクト、 -それはので、持って繰り返し処理するために、またはマテリアライズド...だから、list(dict.items())
何であったかのために必要とされるdict.items()
のPython 2.xでは
Python 2.7にはviewkeys
、viewitems
とviewvalues
メソッドがあるという点で、キー処理用のバックポートが少しあります。最も便利viewkeys
なのは、set
(から期待されるdict
)aのように動作することです。
簡単な例:
common_keys = list(dict_a.viewkeys() & dict_b.viewkeys())
共通キーのリストが表示されますが、Python 3.xでは、.keys()
代わりに使用してください。
Python 3.xは一般に、より「怠惰」になるように作られています。つまりmap
、今itertools.imap
でzip
は効果的ですitertools.izip
。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加