検索
ホームページバックエンド開発Python チュートリアルPythonのitems()シリーズ関数の使い方を詳しく解説
Pythonのitems()シリーズ関数の使い方を詳しく解説May 17, 2017 pm 03:11 PM
dictionaryitems()python使用法

この記事では、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 = &#39;<{name}{attrs}>{value}</{name}>&#39;.format( 
      name = name, 
      attrs = attr_str, 
      value = html.escape(value)) 
  return element 
make_elements(&#39;item&#39;, &#39;Albatross&#39;, size=&#39;large&#39;, quantity=6) 
make_elements(&#39;p&#39;, &#39;<spam>&#39;)

このプログラムの機能は非常に単純で、

HTML タグ

を生成することです。HTML モジュールは Python 3.x でのみ使用できることに注意してください。 。 タグ

attributes

list を生成する keyval の辞書型 変数 が 2 つの %s が 1 つの項目に対応するという興味深い方法で構築されていることに今気づきました。 そこで、関連情報を確認したところ、多くのことがここにまとめられています。 注: 以下のすべての Python インタープリターで使用されるバージョンについては、2.x は 2.7.3 に対応し、3.x は 3.4.1 に対応します

Python 2.x では、公式ドキュメントの items メソッドは次のように説明されています: 次のような (キー, 値) ペアのリストを生成します:

>>> d = {&#39;size&#39;: &#39;large&#39;, &#39;quantity&#39;: 6} 
>>> d.items() 
[(&#39;quantity&#39;, 6), (&#39;size&#39;, &#39;large&#39;)]

search

のプロセスで、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 バージョンに注意してください:

テスト 1 (Python 2.7.3):

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 = {&#39;size&#39;: &#39;large&#39;, &#39;quantity&#39;: 6} 
>>> il = d.items() 
>>> it = d.iteritems() 
>>> vi = d.viewitems() 
>>> il 
[(&#39;quantity&#39;, 6), (&#39;size&#39;, &#39;large&#39;)] 
>>> it 
<dictionary-itemiterator object at 0x7fe555159f18> 
>>> vi 
dict_items([(&#39;quantity&#39;, 6), (&#39;size&#39;, &#39;large&#39;)])
テスト 2 (Python 3.4.1):
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 = {&#39;size&#39;: &#39;large&#39;, &#39;quantity&#39;: 6} 
>>> il = d.items() 
>>> it = d.iteritems() 
Traceback (most recent call last): 
 File "<stdin>", line 1, in <module> 
AttributeError: &#39;dict&#39; object has no attribute &#39;iteritems&#39; 
>>> vi = d.viewitems() 
Traceback (most recent call last): 
 File "<stdin>", line 1, in <module> 
AttributeError: &#39;dict&#39; object has no attribute &#39;viewitems&#39; 
>>> il 
dict_items([(&#39;size&#39;, &#39;large&#39;), (&#39;quantity&#39;, 6)])

Python 3.x では iteritems() と viewitems() が廃止され、item() で得られる結果は 2.x の viewitems() と一致していることがわかります。

2.x では、iteritems() と viewitems() によって返されるコンテンツは、以下に示すように for を使用して走査できます

>>> for k, v in it: 
...  print k, v 
...  
quantity 6 
size large 
>>> for k, v in vi: 
...  print k, v 
...  
quantity 6 
size large

2 つの違いは何ですか? viewitems() は、ディクショナリ内の変更を反映できるビュー オブジェクトを返します。たとえば、上の例では、2 つの変数 it と vi を使用する前にキーと値の組み合わせを d に追加すると、違いが簡単にわかります。 。

>>> it = d.iteritems() 
>>> vi = d.viewitems() 
>>> d[&#39;newkey&#39;] = &#39;newvalue&#39; 
>>> d 
{&#39;newkey&#39;: &#39;newvalue&#39;, &#39;quantity&#39;: 6, &#39;size&#39;: &#39;large&#39;} 
>>> vi 
dict_items([(&#39;newkey&#39;, &#39;newvalue&#39;), (&#39;quantity&#39;, 6), (&#39;size&#39;, &#39;large&#39;)]) 
>>> 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

3 行目で、新しい要素を d に挿入しました。vi はトラバースを続行でき、新しいトラバースは d の変更を反映できますが、トラバース時にエラー メッセージが表示され、トラバース時に辞書を求めるプロンプトが表示されます。サイズが変更され、横断は失敗しました。


要約すると、2.x では当初 items() メソッドが使用されていましたが、メモリの無駄が多すぎるため、3.x では item( の動作を返すために iteritems() メソッドが追加されました。 ) 返されるオブジェクトが元の辞書の変更も反映できるように、ビュー オブジェクトを返すように変更されました。同時に、viewitems() の下位互換性機能が 2.7 で追加されました。

3.x では、 items() メソッドが 1 つだけ保持されるため、3 つの違いについて心配する必要はありません。

この記事で説明されている例は、皆さんの Python プログラミングにとって一定の参考になると思います。

【関連する推奨事項】


1.

特別な推奨事項

:

「php Programmer Toolbox」V0.1 バージョンのダウンロード

2. Python の無料ビデオチュートリアル3. items() メソッド

4. Pythonのitem()関数を使用した辞書の走査例

5. 辞書にアクセスする3つの方法を紹介します

6.sortedのitemsとitemsの違い

以上がPythonのitems()シリーズ関数の使い方を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
详细讲解Python之Seaborn(数据可视化)详细讲解Python之Seaborn(数据可视化)Apr 21, 2022 pm 06:08 PM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于Seaborn的相关问题,包括了数据可视化处理的散点图、折线图、条形图等等内容,下面一起来看一下,希望对大家有帮助。

详细了解Python进程池与进程锁详细了解Python进程池与进程锁May 10, 2022 pm 06:11 PM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于进程池与进程锁的相关问题,包括进程池的创建模块,进程池函数等等内容,下面一起来看一下,希望对大家有帮助。

Python自动化实践之筛选简历Python自动化实践之筛选简历Jun 07, 2022 pm 06:59 PM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于简历筛选的相关问题,包括了定义 ReadDoc 类用以读取 word 文件以及定义 search_word 函数用以筛选的相关内容,下面一起来看一下,希望对大家有帮助。

归纳总结Python标准库归纳总结Python标准库May 03, 2022 am 09:00 AM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于标准库总结的相关问题,下面一起来看一下,希望对大家有帮助。

Python数据类型详解之字符串、数字Python数据类型详解之字符串、数字Apr 27, 2022 pm 07:27 PM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于数据类型之字符串、数字的相关问题,下面一起来看一下,希望对大家有帮助。

分享10款高效的VSCode插件,总有一款能够惊艳到你!!分享10款高效的VSCode插件,总有一款能够惊艳到你!!Mar 09, 2021 am 10:15 AM

VS Code的确是一款非常热门、有强大用户基础的一款开发工具。本文给大家介绍一下10款高效、好用的插件,能够让原本单薄的VS Code如虎添翼,开发效率顿时提升到一个新的阶段。

详细介绍python的numpy模块详细介绍python的numpy模块May 19, 2022 am 11:43 AM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于numpy模块的相关问题,Numpy是Numerical Python extensions的缩写,字面意思是Python数值计算扩展,下面一起来看一下,希望对大家有帮助。

python中文是什么意思python中文是什么意思Jun 24, 2019 pm 02:22 PM

pythn的中文意思是巨蟒、蟒蛇。1989年圣诞节期间,Guido van Rossum在家闲的没事干,为了跟朋友庆祝圣诞节,决定发明一种全新的脚本语言。他很喜欢一个肥皂剧叫Monty Python,所以便把这门语言叫做python。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。