この記事では、Python の関数の items() 系列の使い方を中心に紹介します。必要な方は参考にしてください。 Python の関数は Python プログラミングに非常に役立ちます。具体的な分析は次のとおりです:
まず例を見てみましょう:
import html # available only in Python 3.x def make_elements(name, value, **attrs): keyvals = [' %s="%s"' % item for item in attrs.items()] attr_str = ''.join(keyvals) element = '<{name}{attrs}>{value}</{name}>'.format( name = name, attrs = attr_str, value = html.escape(value)) return element make_elements('item', 'Albatross', size='large', quantity=6) make_elements('p', '<spam>')
このプログラムの機能は非常に単純で、
HTML タグを生成することです。HTML モジュールは Python 3.x でのみ使用できることに注意してください。 。 タグ
attributeslist を生成する keyval の辞書型 変数 が 2 つの %s が 1 つの項目に対応するという興味深い方法で構築されていることに今気づきました。 そこで、関連情報を確認したところ、多くのことがここにまとめられています。 注: 以下のすべての Python インタープリターで使用されるバージョンについては、2.x は 2.7.3 に対応し、3.x は 3.4.1 に対応します
Python 2.x では、公式ドキュメントの items メソッドは次のように説明されています: 次のような (キー, 値) ペアのリストを生成します:>>> d = {'size': 'large', 'quantity': 6} >>> d.items() [('quantity', 6), ('size', 'large')]
のプロセスで、stackoverflow でこの質問を偶然見ました: What is theDifference between dict.items() と dict.iteritems( )? 、最初の答えは大まかにこれを意味します: 「最初は items() は上記のような dict のすべての要素を含むリストを返しましたが、これはメモリの無駄が多すぎるため、後で追加されました (注: Python では関数のグループ2.2 で登場し始めた iteritems()、iterkeys()、および itervalues() はメモリを節約するためにイテレータを返すために使用されますが、3.x では items() 自体がそのようなイテレータを返すため、3.x では
. x の items() の動作は、2 の iteritems() の動作と一致しています。このステートメントは、3.x の items() の動作が 2.x の iteritems() とは異なることに注意してください。実際には、「完全なシーケンス プロトコル オブジェクト」を返します。この
オブジェクトは、dict の変更を反映できます。その後、3.x の動作との一貫性を保つために、別の関数 viewitems() が Python 2.7 に追加されました。コメント内のステートメントを確認するために、次のテストを実行しました。使用されているテスト Python バージョンに注意してください:Python 2.7.3 (default, Feb 27 2014, 19:58:35) [GCC 4.6.3] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> d = {'size': 'large', 'quantity': 6} >>> il = d.items() >>> it = d.iteritems() >>> vi = d.viewitems() >>> il [('quantity', 6), ('size', 'large')] >>> it <dictionary-itemiterator object at 0x7fe555159f18> >>> vi dict_items([('quantity', 6), ('size', 'large')])
Python 3.4.1 (default, Aug 12 2014, 16:43:01) [GCC 4.9.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> d = {'size': 'large', 'quantity': 6} >>> il = d.items() >>> it = d.iteritems() Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'dict' object has no attribute 'iteritems' >>> vi = d.viewitems() Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'dict' object has no attribute 'viewitems' >>> il dict_items([('size', 'large'), ('quantity', 6)])
>>> for k, v in it: ... print k, v ... quantity 6 size large >>> for k, v in vi: ... print k, v ... quantity 6 size large
>>> it = d.iteritems() >>> vi = d.viewitems() >>> d['newkey'] = 'newvalue' >>> d {'newkey': 'newvalue', 'quantity': 6, 'size': 'large'} >>> vi dict_items([('newkey', 'newvalue'), ('quantity', 6), ('size', 'large')]) >>> it <dictionary-itemiterator object at 0x7f50ab898f70> >>> for k, v in vi: ... print k, v ... newkey newvalue quantity 6 size large >>> for k, v in it: ... print k, v ... Traceback (most recent call last): File "<stdin>", line 1, in <module> RuntimeError: dictionary changed size during iteration
要約すると、2.x では当初 items() メソッドが使用されていましたが、メモリの無駄が多すぎるため、3.x では item( の動作を返すために iteritems() メソッドが追加されました。 ) 返されるオブジェクトが元の辞書の変更も反映できるように、ビュー オブジェクトを返すように変更されました。同時に、viewitems() の下位互換性機能が 2.7 で追加されました。
1.
特別な推奨事項
:
「php Programmer Toolbox」V0.1 バージョンのダウンロード2. Python の無料ビデオチュートリアル3. items() メソッド
以上がPythonのitems()シリーズ関数の使い方を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。